SQL查询帮助:需要为下面描述的问题编写查询

时间:2011-03-21 01:40:09

标签: sql

假设我有一个名为Orders的表

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

查询结果应如下(注意数量是qty的列数)

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

请帮我查询一下?

5 个答案:

答案 0 :(得分: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,Oracle等)服务器,那么我可以生成更整洁的查询。

答案 1 :(得分: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

假设qty#column值可能为NULL,这需要使查询不会返回NULL,因为某些数据库不喜欢将NULL(一个不存在的值的占位符)添加到有效的整数值。首先测试后忽略COALESCE,或确认列不可为空。

答案 2 :(得分:0)

我希望它只是在订单中没有ProductID的错误....

SELECT productID, (qty1 + qty2 + qty3 ) AS  qty FROM Ordrers .....

答案 3 :(得分:0)

SELECT qty1 + qty2 + qty3 FROM Orders GROUP BY id

答案 4 :(得分:0)

select id as product_id, (qty1 + qty2 + qty3 ) as qty from orders;