SQL Server - получение таблицы
У меня есть следующий запрос, который дает следующий результат.
select RowNumber, ApplicationDecisionID, RowNumber-1 as previousDescIDRowNumber from (
select ROW_NUMBER() OVER(ORDER BY applicationdecisionid ASC) AS RowNumber, ApplicationDecisionID from dscs_public.ApplicationDecision where ApplicationID in (
select applicationid from dscs_public.Application where ApplicationID = (
select ApplicationID from dscs_public.ApplicationDecision
-- where ApplicationDecisionID = @applicationDescID
where ApplicationDecisionID = 989
)
)) t
Урожайность:
RowNumber ApplicationDecisionID previousDescIDRowNumber
-------------------- --------------------- -----------------------
1 705 0
2 989 1
Я хотел бы, чтобы previousDescIDRowNumber фактически являлся предыдущим ApplicationDecisionID, а не просто номером строки, например так:
RowNumber ApplicationDecisionID previousDescIDRowNumber
-------------------- --------------------- -----------------------
1 705 <blank>
2 989 705
Может кто-нибудь помочь с запросом по этому вопросу, пожалуйста?
1 ответ
Решение
Вы можете оставить свой запрос к себе:
.......;
with q as(
select RowNumber, ApplicationDecisionID
from (
select ROW_NUMBER() OVER(ORDER BY applicationdecisionid ASC) AS RowNumber
, ApplicationDecisionID
from dscs_public.ApplicationDecision
where ApplicationID in (
select applicationid from dscs_public.Application
where ApplicationID = (
select ApplicationID from dscs_public.ApplicationDecision
where ApplicationDecisionID = 989
)
)
) t
)
Select q1.RowNumber, q1.ApplicationDecisionID, q2.ApplicationDecisionID
From q as q1
Left Join q as q2 on q1.RowNumber-1 = q2.RowNumber