Вот выборка данных:SQL. Сравнение строк и заданных значений NULL If несуществующих
| date | id | version |
| 2013-04-15 | 'ape' | 1.1 |
| 2013-04-15 | 'bat' | 2.1 |
| 2013-04-15 | 'cat' | 3.1 |
| 2013-04-15 | 'dog' | 4.1 |
| 2013-03-15 | 'ape' | 1.0 |
| 2013-03-15 | 'cat' | 3.2 |
| 2013-03-15 | 'dog' | 3.8 |
| 2013-02-15 | 'ape' | 0.9 |
| 2013-02-15 | 'dog' | 3.1 |
Запрос будет определить новейшую дату и вторую новейшую дату. В примере это 2013-4-15 и 2013-3-15.
я, вероятно, найти тех, кто с этим кодом, потому что это то, что я знаю:
DECLARE @FirstDate DATETIME
SET @FirstDate = (SELECT max(date)
FROM mytable)
DECLARE @SecondDate DATETIME
SET @SecondDate = (SELECT max(date)
FROM mytable
WHERE date < @FirstDate)
Я хочу вывода, как это:
| date | id | version | prevdate | pversion |
| 2013-04-15 | 'ape' | 1.1 | 2013-03-15 | 1.0 |
| 2013-04-15 | 'bat' | 2.1 | 2013-03-15 | null |
| 2013-04-15 | 'cat' | 3.1 | 2013-03-15 | 3.2 |
| 2013-04-15 | 'dog' | 4.1 | 2013-03-15 | 3.8 |
Таким образом, запрос находит все строки с датой = Первое свидание. И для каждой строки он будет смотреть строки date = SecondDate и включать номер версии для строк с одним и тем же идентификатором. Если нет даты = строка SecondDate с тем же идентификатором, верните «null» или «» или 0 или что-то еще.
У вас есть столбец с таким порядком ваших строк ?. Таблица не имеет «естественного» порядка, поэтому, говоря, что вам нужен тот же порядок, что и на исходной таблице, бессмысленно – Lamak
Хорошо, я отредактировал его. – user1744318