は、SQL Server 2012上にある場合は、前の行で値を比較するLAGを使用することができます。前の行と値を比較するためにこれを使用します。SalesOrderID
とPreviousSalesOrderID
を比較して、SubTotal
の列を記入してください。
ソリューション:
SELECT SalesOrder.SalesOrderID, SalesOrder.SalesOrderNo, t1.PONo,
(CASE
WHEN (t1.PreviousSalesOrderID IS NULL) OR (t1.PreviousSalesOrderID <> SalesOrder.SalesOrderID) THEN SalesOrder.SubTotal
END) as SubTotal
FROM (SELECT SalesOrder.SalesOrderID, PurchaseOrder.PONo,
LAG(SalesOrder.SalesOrderID) OVER (ORDER BY SalesOrder.SalesOrderID) AS PreviousSalesOrderID
FROM SalesOrder LEFT OUTER JOIN PurchaseOrder ON SalesOrder.SalesOrderID = PurchaseOrder.SalesOrderID) AS t1
LEFT OUTER JOIN SalesOrder ON SalesOrder.SalesOrderID = t1.SalesOrderID
出力(あなたの期待される出力と同じ):
SalesOrderID SalesOrderNo PONo SubTotal
8 S00008 p7 1544
9 S00009 p8 1644
9 S00009 p262 NULL
10 S00010 p263 4922
10 S00010 p9 NULL
11 S00011 p10 7805
あなたは(基本的に主キーと外部キー)テーブル構造を共有することはでき – Ravi
ショーあなたが今何を得ると何をしたいのですか –