iT邦幫忙

0

SQL 語法,多重欄位的加總計算。

smaap 11 月前1827 瀏覽

請問 sql菜鳥遇到鐵板,案例如下

num 單別aa 單號bb 序號cc 生產數量dd 報廢數量ee
1 123 456 001 100 5
2 123 456 002 300 0
3 123 456 003 0 10
4 234 567 001 200 9
5 234 567 002 150 8

請問要如何使單別123 與 單號456 下,不論序號,所有生產數量與報廢數量加總?

0
allenlwh
iT邦新手 1 級 ‧ 11 月前
select 單別aa,單號bb,sum(生產數量dd) as 生產數量加總,sum(報廢數量ee) as 報廢數量加總
from yourTable
where 單別aa='123' and 單號bb='456'
group by 單別aa,單號bb
尼克 iT邦高手 1 級 ‧ 11 月前 檢舉

這是Group by 觀念!

goodnight iT邦研究生 5 級 ‧ 11 月前 檢舉

應該這樣就可以了吧, 他好像不用管單號

select 單別aa,sum(生產數量dd) as 生產數量加總,sum(報廢數量ee) as 報廢數量加總
from yourTable
group by 單別aa
goodnight iT邦研究生 5 級 ‧ 11 月前 檢舉

抱歉你是對的, 我沒注意看他的說明, 可惜我的回應刪不掉

0
做工仔人!
iT邦高手 1 級 ‧ 11 月前

select 單別aa,單號bb,sum(生產數量dd) 生產數量dd ,sum(報廢數量ee) 報廢數量ee
from TABLE_NAME
group by 單別aa,單號bb

TABLE NAME 就是這個TABLE 的名稱

0
badbayz
iT邦新手 4 級 ‧ 11 月前

我是這樣寫

SELECT SUM(CASE WHEN aa = '123' and bb = '456' THEN dd+ee ELSE 0 END) total  FROM sum_num;
0
Albert
iT邦高手 1 級 ‧ 11 月前

給你參考
將小計入列

SELECT DocumentNo,DateOrdered, ProductName, MovementDate, DocTypeName, BPartnerName, ProductionQty
FROM (
SELECT o.DocumentNo,1 AS Seq, o.DateOrdered, p.Name ProductName,a.MovementDate,dt.Name DocTypeName,bp.Name BPartnerName, a.ProductionQty
FROM M_Production a
INNER JOIN C_OrderLine l ON a.C_OrderLine_ID=l.C_OrderLine_ID
INNER JOIN C_Order o ON o.C_Order_ID=l.C_Order_ID
INNER JOIN M_Product p ON l.M_Product_ID=p.M_Product_ID
INNER JOIN C_BPartner bp ON o.C_BPartner_ID=bp.C_BPartner_ID
INNER JOIN C_DocType dt ON o.C_DocType_ID=dt.C_DocType_ID

UNION

SELECT  DocumentNo,2 AS Seq, null AS DateOrdered, cast('訂單編號小計' as nvarchar2(20)) AS ProductName,null AS MovementDate,null AS DocTypeName,null AS BPartnerName,SUM(ProductionQty)
FROM (
SELECT o.DocumentNo,o.DateOrdered, p.Name ProductName,a.MovementDate,dt.Name DocTypeName,bp.Name BPartnerName, a.ProductionQty
FROM M_Production a
INNER JOIN C_OrderLine l ON a.C_OrderLine_ID=l.C_OrderLine_ID
INNER JOIN C_Order o ON o.C_Order_ID=l.C_Order_ID
INNER JOIN M_Product p ON l.M_Product_ID=p.M_Product_ID
INNER JOIN C_BPartner bp ON o.C_BPartner_ID=bp.C_BPartner_ID
INNER JOIN C_DocType dt ON o.C_DocType_ID=dt.C_DocType_ID
) x
GROUP BY x.DocumentNo
)
ORDER BY DocumentNo, Seq
Albert iT邦高手 1 級 ‧ 11 月前 檢舉

這是給一個 SQL Statement 在 明細列+小計
(依據你的需求小計可以是同單據,同料號,同日期,同客戶.....)

我要發表回答

立即登入回答