- 0,如果總和(蘋果)爲0
- 1如果總和(蘋果)是奇數
- 2如果總和(蘋果)是 甚至
我如何編寫這樣的查詢?
select answer =
case sum(apples)%2
when 1 then 1
else 2
end
from fruits
我需要一個第三個選項0,如果和是零...
我的問題是,SUM(蘋果)2倍%的回報都在,甚至零的情況下0。
謝謝
我如何編寫這樣的查詢?
select answer =
case sum(apples)%2
when 1 then 1
else 2
end
from fruits
我需要一個第三個選項0,如果和是零...
我的問題是,SUM(蘋果)2倍%的回報都在,甚至零的情況下0。
謝謝
您需要將查詢更改爲以下方法。
select answer =
case
WHEN sum(apples)=0 then 0
WHEN sum(apples)%2 = 1 then 1
else 2
end
from fruits
按MySQL Documentation你有兩個選擇語法,你只需要切換到第二個選項
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
或
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list] ...
[ELSE statement_list
END CASE
您可以使用這個小片段代碼的方式,你想...
declare @n int = 0
select case @n when 0 then 'zero' else (case (@n%2) when 1 then 'odd' else 'even' end) end
使用@n的其他值進行嘗試。
根據列是如何定義的(這是強制性的還是它允許NULL
S)SUM
可以返回一個非空值或者它可能返回NULL:
SELECT x.OrderID,
SUM(x.Qty) AS SumOfQty,
CASE
WHEN SUM(x.Qty) = 0 THEN 0
WHEN SUM(x.Qty) % 2 = 1 THEN 1
WHEN SUM(x.Qty) % 2 = 0 THEN 2
ELSE -1 -- SUM(x.Qty) IS NULL
END AS CaseSumOfQty
FROM (
SELECT 1, 100 UNION ALL
SELECT 2, 200 UNION ALL
SELECT 2, 301 UNION ALL
SELECT 3, 0 UNION ALL
SELECT 4, NULL
) x(OrderID, Qty)
GROUP BY x.OrderID;
輸出:
OrderID SumOfQty CaseSumOfQty
------- ----------- ------------
1 100 2
2 501 1
3 0 0
4 NULL -1 -- SUM(x.Qty) IS NULL
sum(蘋果)%2返回0無論是0還是......這就是我的問題。 –