2014-02-06 69 views
0

我需要:用於檢查總和是偶數,奇數還是零的mssql查詢?

  • 0,如果總和(蘋果)爲0
  • 1如果總和(蘋果)是奇數
  • 2如果總和(蘋果)是 甚至

我如何編寫這樣的查詢?

select answer = 
     case sum(apples)%2 
     when 1 then 1 
     else 2 
     end 
    from fruits 

我需要一個第三個選項0,如果和是零...
我的問題是,SUM(蘋果)2倍%的回報都在,甚至零的情況下0。
謝謝

回答

1

您需要將查詢更改爲以下方法。

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  
+0

sum(蘋果)%2返回0無論是0還是......這就是我的問題。 –

0

您可以使用這個小片段代碼的方式,你想...

declare @n int = 0 
select case @n when 0 then 'zero' else (case (@n%2) when 1 then 'odd' else 'even' end) end 

使用@n的其他值進行嘗試。

0

根據​​列是如何定義的(這是強制性的還是它允許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 
相關問題