2012-09-26 69 views
1

試圖找出如何將一個或一個case語句的T-SQL或者內部Case語句

我基本上是檢查兩件事情,如果任一個是真實的,只是把他們看成0爲伯爵。

COUNT(Case When (car[Weight] IS null) then 0 else car.CarKey 
      OR When (car.BinNumber is null) then 0 else car.CarKey 
     End) as Carkey 

也試過,但語法錯誤

COUNT(Case When (car[Weight] IS null) then 0 
     else When (car.BinNumber is null) then 0 
     else car.CarKey 
     End) as Carkey 
+0

以供將來參考,case語句不拆的方式。 CASE什麼時候(...)然後...何時(...)然後...其他...結束; – jtimperley

回答

2

您可以使用OR這樣:

COUNT(Case 
     When (car.[Weight] IS null) or (car.BinNumber is null) 
     then 0 
     else car.CarKey End) as Carkey 
+0

但是,這將計數0。 OP想要什麼? 也許他希望SUM(CASE ... THEN 0 ELSE 1 END)作爲CarKey – GilM

+0

@GilM據說,是的,這是他們想要的。這將是OP的一個問題。 – Taryn

1

你接近你的第二次嘗試,只是刪除一個else

COUNT(Case When (car[Weight] IS null) then 0 
    When (car.BinNumber is null) then 0 
    else car.CarKey 
    End) as Carkey 

注意:如果你想計算沒有空值的項目,那不會。零值仍然是一個值,所以它也會被計數。使用null爲您不想計算項目:

COUNT(Case When (car[Weight] IS null) then null 
    When (car.BinNumber is null) then null 
    else car.CarKey 
    End) as Carkey 

或者使用sum代替:

SUM(Case When (car[Weight] IS null) then 0 
    When (car.BinNumber is null) then 0 
    else 1 
    End) as Carkey