Внутри этого TSQL CTE я пытаюсь создать список счетов-фактур, которые рекурсивно начинаются с родительской версии, вплоть до Ver 1 для каждого счета-фактуры.Рекурсивный запрос CTE для заполнения последовательности
With
myList
AS (Select 10000 as INVOICE, 3 as VER
UNION ALL
Select 20000 as INVOICE, 5 as VER
UNION ALL
Select 30000 as INVOICE, 8 as VER
UNION ALL
Select 40000 as INVOICE, 2 as VER)
,newList (Invoice, Ver)
AS (Select
L1.Invoice
,L1.Ver
from
myList L1
UNION ALL
Select
L2.Invoice
,L2.Ver - 1 Ver
from
myList L2
Join
newList L3
on L2.invoice = L3.Invoice and L2.VER = L3.VER
Where
L2.Ver > = 1)
Select * from newList order by INVOICE, VER desc
Избранная на 'MyList' даст вам:
Invoice Ver
10000 3
20000 5
30000 8
40000 2
И то, что я надеюсь достичь является:
Invoice Ver
10000 3
10000 2
10000 1
20000 5
20000 4
20000 3
20000 2
20000 1
30000 8
30000 7
30000 6
30000 5
30000 4
30000 3
30000 2
30000 1
40000 2
40000 1
Я пробовал много вариантов (и, конечно, не правильный!), но самое лучшее, что я могу сделать, это достичь только 2-го уровня ...
Invoice Ver
10000 3
10000 2
20000 5
20000 4
30000 8
30000 7
40000 2
40000 1
Спасибо, что посмотрели!
ха-ха, - подумал я делал именно то, что вы сказали, что мне нужно делать. Я предполагаю, что пример Microsoft отбросил меня, так как обе стороны этого CTE ссылаются на якорный запрос. Несмотря ни на что, молодец! – flaZer