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
Другие вопросы по тегам