iT邦幫忙

0

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

smaap 2016-09-25 07:09:5294927 瀏覽

請問 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 下,不論序號,所有生產數量與報廢數量加總?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
allenlwh
iT邦高手 1 級 ‧ 2016-09-25 14:33:42
select 單別aa,單號bb,sum(生產數量dd) as 生產數量加總,sum(報廢數量ee) as 報廢數量加總
from yourTable
where 單別aa='123' and 單號bb='456'
group by 單別aa,單號bb
尼克 iT邦大師 1 級 ‧ 2016-09-26 09:01:49 檢舉

這是Group by 觀念!

goodnight iT邦研究生 2 級 ‧ 2016-09-27 17:35:48 檢舉

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

select 單別aa,sum(生產數量dd) as 生產數量加總,sum(報廢數量ee) as 報廢數量加總
from yourTable
group by 單別aa
goodnight iT邦研究生 2 級 ‧ 2016-09-27 17:37:00 檢舉

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

0
做工仔人!
iT邦大師 1 級 ‧ 2016-09-25 14:33:58

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

TABLE NAME 就是這個TABLE 的名稱

0
badbayz
iT邦新手 4 級 ‧ 2016-09-26 11:44:07

我是這樣寫

SELECT SUM(CASE WHEN aa = '123' and bb = '456' THEN dd+ee ELSE 0 END) total  FROM sum_num;
0
Albert
iT邦高手 1 級 ‧ 2016-10-01 22:39:28

給你參考
將小計入列

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 級 ‧ 2016-10-18 09:27:57 檢舉

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

我要發表回答

立即登入回答