SQL을 사용하여 현재 행에서 이전 행의 값을 뺍니다.SQL 행은 이전 행의 값을 사용합니다.
PONum | OrderLine | PartNum | PartDescription | OrderNum | OurQty | Reserved | Allocated | NewOurQty | CustNum | Name
73 1 10050926 Example Description 62 55 35 35 20 1032 Sam Test
73 1 10050926 Example Description 63 55 6 6 49 496 Steve Test
을하지만 그것을 반환 할 :
SELECT
rd.PONum,
od.OrderLine,
rd.PartNum,
p.PartDescription,
od.OrderNum,
rd.OurQty,
od.Number01 AS Reserved,
CASE WHEN rd.OurQty - od.Number01 > 0
THEN od.Number01
ELSE rd.OurQty END AS Allocated,
rd.OurQty - od.Number01 AS NewOurQty,
c.CustNum,
c.Name
FROM dbo.RcvDtl AS rd INNER JOIN
dbo.Part AS p ON rd.PartNum = p.PartNum INNER JOIN
dbo.OrderDtl AS od ON rd.PartNum = od.PartNum INNER JOIN
dbo.OrderHed AS oh ON od.OrderNum = oh.OrderNum INNER JOIN
dbo.Customer AS c ON od.CustNum = c.CustNum
WHERE (rd.PONum = 73)
AND (od.Number01 > 0)
AND (od.OpenLine = 1)
이
는 값을 반환 행 1에서PONum | OrderLine | PartNum | PartDescription | OrderNum | OurQty | Reserved | Allocated | NewOurQty | CustNum | Name
73 1 10050926 Example Description 62 55 35 35 20 1032 Sam Test
73 1 10050926 Example Description 63 55 6 6 14 496 Steve Test
NewOurQty = 20 (55-35). 이제 행 2는 NewOurQty (행 n-1) - 예약 됨 (행 n에서)을 계산하여 현재 행에 대한 NewOURQty를 계산해야합니다.
SQL을 사용하여 이전 행의 값을 검색하려면 어떻게해야합니까?
편집하는 것은
것은 나는 마이크로 소프트 SQL이
'lag()'와 같은 WINDOW 함수로도 충분합니다. – wildplasser
어떤 DBMS를 사용하고 있습니까? 포스트그레스? 신탁? –
MSSQL을 사용하고 있습니다 – samb90