假设我有一个名为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
请帮我查询一下?
答案 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;