2017-02-17 6 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

どのDBMSを使用していますか? –

答えて

0

私はあなたの質問を理解するとして、あなたはPackNumが発注時に列Calc_AgeInvAmt2のために、現在の行と前の行との間の差を取得する必要があります。次に、これを使用することができます:

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; 
関連する問題