LAG Несовместимость:
Я заменил использование LAG с помощью ROWCOUNT для определения порядка строк и использовал дополнительный выбор для ссылки на тот же набор данных в последней части моего CTE, чтобы оглянуться назад к тому, что было предыдущей строкой по времени для секционированный блок строк.
Это упрощенная иллюстрация:
`CTE xyz(
SELECT [Field 1]
, [Field 2]
, [Year]
, [Period]
, ROWCOUNT(PARTITION BY [field 1], ORDER BY [Year] ASC, [Period] ASC) [Row]
FROM table
)
SELECT *
, (SELECT [Field 2] FROM xyz x1 WHERE x1.[Field 1] = [Field 1] AND [Row] - 1 = x1.[Row]) [Old row]
FROM xyz`
CONCAT Несовместимость:
Я использовал исторический оператор «+» для присоединения к VARCHAR и обслуживал значения NULL с помощью ISNULL, потому что хотел указать, какие данные действительно существуют.
SELECT ISNULL([Field 1], ''), + ISNULL([Field 2])
FROM table