У меня есть 4 общих табличных выражения, каждое из которых содержит 2 столбца
(RowNumber, AccountNumber), но содержат записи переменных в каждом CTE в зависимости от параметров запроса. Цель состоит в том, чтобы сохранить все ненулевые номера счетов вверху для каждого CTE после присоединения.
Я присоединяюсь к 4 CTE, используя FULL Join на основе RowNumber. Проблема, которую я получаю, состоит в том, что последовательность AccountNumber не является непрерывной, то есть в некоторых случаях она содержит некоторые нулевые значения между Accountnumber. Я хочу, чтобы все ненулевые значения всегда были объединены, а сверху - пустыми значениями. Количество AccountNumber в каждом CTE всегда различно.
SELECT
ISNULL(Cte_FirstYear.AccountNumber,'') as FirstYear,
ISNULL(Cte_SecondYear.AccountNumber,'') as SecondYear,
ISNULL(cte_ThirdYear.AccountNumber,'') as ThirdYear,
ISNULL(cte_FourthYear.AccountNumber,'') as FourthYear
FROM cte_ThirdYear
FULL OUTER JOIN
cte_FirstYear
on
cte_ThirdYear.RowNumber=cte_FirstYear.RowNumber
full outer join Cte_SecondYear
on
cte_ThirdYear.RowNumber=Cte_SecondYear.RowNumber
full outer join cte_FourthYear
on
cte_ThirdYear.RowNumber=cte_FourthYear.RowNumber
Вот как я получаю вывод;
FirstYear SecondYear ThirdYear FourthYear
1 2 3 4
5 6 7 1
9 NULL NULL
NULL
9 9
10 NULL
Здесь ожидаемый результат;
FirstYear SecondYear ThirdYear FourthYear
1 2 3 4
5 6 7 1
9 9 9
10