2012-09-04 61 views
1

可能在SQL CASE子句中有一個和語句?如果是的話,你如何寫它?SQL案件什麼時候什麼東西然後

即這樣的事情?:

CASE 
    When ((Column < 1) AND (Column2 > 0)) THEN column4 + 1 
END as Column 

我的代碼執行,但不會達到我想要的東西(沒有負數):

CASE 
WHEN (((Clean_Total_Time - ActivityTimeTotalMin) < 0) AND (ActivityTimeTotalMin > 0))  
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1) 
END as hours 

我的代碼,做工作,做完成它應該但我不想要它,因爲它允許負數:

CASE 
WHEN (Clean_Total_Time - ActivityTimeTotalMin) < 0 
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1) 
END as hours 

EDI T:這個計算的目的如下:

它減去兩列,如果結果是負數,則從這兩列之一中減去第一個數。此外,我的AND部分是說,如果該列的值爲零,那麼它不會從列中減1。我不希望該列的數字低於零。

唯一沒有發生的事情是,如果列等於零,它不會捕獲。所以我得到負1時這裏原是一個0

+0

你有什麼應該工作。你試過了嗎? – mellamokb

+2

你試過了嗎? –

+0

是的,我試過了,沒有出現任何錯誤,它只是沒有改變任何東西。我會發布我的代碼。 – eatonphil

回答

2

據此MSDN article是:

SELECT ProductNumber, Name, "Price Range" = 
     CASE 
     ... 
     WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' 
     WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' 
     ELSE 'Over $1000' 
     END 
FROM Production.Product 

我不認爲你需要括號。

更新1

您可以嘗試使用CASECASE像這樣:

CASE 
    WHEN Column < 1 
     CASE 
      WHEN Column2 > 0 THEN column4 + 1 
     END 
END AS Column 
+0

謝謝,剛試過這個,它仍然會減去列,如果是零。任何其他建議? – eatonphil

相關問題