2011-03-21 111 views
0

查詢可以說我有表名爲訂單SQL查詢幫助:需要編寫下面描述的問題

id  qty1 qty2  qty3 
----------------------------------- 
1  1  2  3 
2  0  1  0 
3  3  2  1 

結果查詢的應該是如下(注意數量的總和逐列的數量)

productID qty 
---------------- 
1   4 
2   5 
3   4 

請幫我查詢嗎?

+1

您的表格和查詢結果之間沒有明確的關係。你輸入了正確的輸出嗎?此外,將其標記爲家庭作業。 – 2011-03-21 01:47:27

回答

1

它看起來像一個非常奇怪的桌子設計,你想要的結果更奇怪。但是,這應該這樣做:

SELECT 1 AS productID, SUM(qty1) AS qty FROM Orders 

UNION 

SELECT 2 AS productID, SUM(qty2) AS qty FROM Orders 

UNION 

SELECT 3 AS productID, SUM(qty3) AS qty FROM Orders 

,如果您指定SQL(PostgreSQL的,MySQL和甲骨文等)的服務器的類型比我也許能產生更整潔查詢。

+0

感謝您的回覆,有沒有什麼辦法可以做到這一點,而無需爲productID進行硬編碼? – NsM 2011-03-21 02:01:22

+0

UNION不會合並每列的值 - 它只會省略重複項。 – 2011-03-21 02:21:50

+0

@NsM:你真的有每列1列嗎?如果你這樣做,你使用的是哪個數據庫服務器? – Wolph 2011-03-21 11:25:19

0

我希望這只是錯字你不具備的ProductID在訂單....

SELECT productID, (qty1 + qty2 + qty3) AS qty FROM Ordrers ..... 
0
SELECT qty1 + qty2 + qty3 FROM Orders GROUP BY id 
0
select id as product_id, (qty1 + qty2 + qty3) as qty from orders; 
1

用途:

SELECT o.productid, 
     COALESCE(SUM(o.qty1), 0) + COALESCE(SUM(o.qty2), 0) + COALESCE(SUM(o.qty3), 0) AS qty 
    FROM ORDERS o 
GROUP BY o.productid 
ORDER BY o.productid 

假設一個數量#列的值可能爲NULL,這要求隔絕您的查詢返回NULL,因爲某些數據庫不喜歡將NULL(一個不存在的值的佔位符)添加到一個有效的整數值。先測試後省略COALESCE,或確認列不可空。