[英]Summarizing data using common characteristics (PO value based on value of lines)
我想編寫一個腳本來查看唯一的 PO 並根據行的狀態確定該 PO 是否已關閉。 此外,我想對每個 PO 的所有行的值求和。 下面的例子顯示了我所追求的。
采購訂單 | 線 | 關閉 | Rem_Amount |
---|---|---|---|
41000934 | 1個 | 是的 | 10,000 |
41000934 | 2個 | 不 | 5,000 |
41000950 | 1個 | 是的 | 4000 |
41000950 | 2個 | 是的 | 8000 |
41000950 | 3個 | 是的 | 2000 |
請查看 GROUP BY。 https://www.w3schools.com/sql/sql_groupby.asp
要計算總和,您可以使用 SUM function... 看到“No”小於“Yes”(按字母順序)您可以使用 MIN function,如果有一個或多個行 Closed = ',它將返回 No沒有'每個采購訂單。
SELECT
PO,
MIN(CLOSED) AS CLOSED,
SUM(REM_AMOUNT) AS REMAINING_AMOUNT
FROM TABLE
GROUP BY PO
我們可以在 closed 上使用 FUNCTION MIN() 來查明是否有任何行的值為“No”。 我們使用 function SUM 將剩余金額相加,然后 GROUP BY PO 的值。
create table poLines( PO int, Line int, Closed char(3), Rem_Amount int, constraint ck_closed check (Closed in ('Yes','No') ) ); insert into poLines values (41000934, 1, 'Yes', 10000), (41000934, 2, 'No', 5000), (41000950, 1, 'Yes', 4000), (41000950, 2, 'Yes', 8000), (41000950, 3, 'Yes', 2000);
SELECT PO, CASE WHEN MIN(Closed) = 'No' THEN 'open' ELSE 'closed' END status, SUM(Rem_Amount) Remaining FROM poLines GROUP BY PO;
采購訂單 | 狀態 | 剩余 ------: |:----- | ------: 41000934 | 打開| 15000 41000950 | 關閉 | 14000
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.