有三列:
SELECT SUM(IF(order_code BETWEEN ... AND ..., quantity, 0)), -- group1
SUM(IF(order_code BETWEEN ... AND ..., quantity, 0)), -- group2
SUM(IF(order_code BETWEEN ... AND ..., quantity, 0)) -- group3
FROM orders
;
如果你想要一個列與三行:
SELECT group_number,
SUM(quantity)
FROM (SELECT quantity,
CASE WHEN order_code BETWEEN ... AND ... THEN 1 -- group1
WHEN order_code BETWEEN ... AND ... THEN 2 -- group2
WHEN order_code BETWEEN ... AND ... THEN 3 -- group3
ELSE NULL
END AS group_number
FROM orders
) AS t
WHERE group_number IS NOT NULL
GROUP
BY group_number
;
(子查詢實際上並不是必要的,但我認爲它使得它更清楚發生了什麼)。
謝謝你的回答。 **一行三列工作良好**,但**一列三行**讓我錯誤'每個派生表都必須有自己的別名',並且在我修復別名後它工作良好。 – 2012-03-31 19:12:53
@KhaledLela:不客氣!我已經添加了你提到的別名。如果我的答案幫助了你,請[接受它](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 :-) – ruakh 2012-03-31 19:14:48
感謝您的快速回答,我正在編輯您的答案,但您先前在我身邊。 – 2012-03-31 19:19:45