2017-02-17 9 views
0

Знаете ли вы, есть ли способ проверить предыдущую запись в SQL-запросе? У меня есть следующая информация:SQL проверяет предыдущее значение на выбор

enter image description here

Я хотел бы видеть информацию следующим образом:

enter image description here

Это запрос:

Select 
T1.Company, T1.Calc_CurDueDate, T1.InvoiceNum, t2.PackNum, T1.Calc_CustID, 
0 As Calc_AgeInvAmt1, 
CASE 
    WHEN T3.InvoiceAmt = T3.InvoiceBal THEN (SUM(T2.ExtPrice)-SUM(T2.DocDiscount)) 
    ELSE 36600 END as Calc_AgeInvAmt2, 
0 as Calc_AgeInvAmt3, 
0 as Calc_AgeInvAmt4, 
0 as Calc_AgeInvAmt5, 
0 as Calc_AgeInvAmt6 
FROM ARDtls_23b33e365b2d46cc9552a2ee324d2cb1 T1 
INNER JOIN InvcDtl_23b33e365b2d46cc9552a2ee324d2cb1 T2 
ON T2.Company = T2.Company AND T1.InvoiceNum = T2.InvoiceNum 
INNER joIN InvcHead_23B33E365B2D46CC9552A2EE324D2CB1 T3 
ON T1.Company = T3.Company AND T1.InvoiceNum = T3.InvoiceNum 
Group BY T1.Company, T1.Calc_CurDueDate, T1.InvoiceNum, t2.PackNum, T1.Calc_CustID, T3.InvoiceAmt, T3.InvoiceBal 
HAVING T1.Calc_CurDueDate >= @MinAgeDate AND T1.Calc_CurDueDate < @AgeDate 

Любая идея будет оценили.

Благодаря

+0

Какая СУБД вы используете? –

ответ

0

Как я понимаю ваш вопрос, вы должны получить разницу между текущей строкой и предыдущей строкой для Calc_AgeInvAmt2 столбца, когда по заказу PackNum. Затем вы можете использовать это:

With q as (... put your query here ...) 
select InvoiceNum, PackNum, CalcCustID, Calc_AgeInvAmt1, Calc_AgeInvAmt2 - coalesce(lag(Calc_AgeInvAmt2) over (order by PackNum),0) as Calc_AgeInvAmt2 from q;