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

问题描述:

查询可以说我有表名为订单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

它看起来像一个非常奇怪的桌子设计,你想要的结果更奇怪。但是,这应该这样做:

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

我希望这只是错字你不具备的ProductID在订单....

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

SELECT qty1 + qty2 + qty3 FROM Orders GROUP BY id 

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

用途:

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,或确认列不可空。