2012-07-07 146 views
0

您好我有DB2選擇CASE語句:SQL CASE語句返回錯誤

case when actualfinish is not null then dec ((timestampdiff(
    4, 
    char(actualfinish - reportdate))/60.00),10,2) 
else 'not' 
end 

它返回我的錯誤。 如果我刪除ELSE部分沒有錯誤並且計算完成。

case when actualfinish is not null then dec ((timestampdiff(
     4, 
     char(actualfinish - reportdate))/60.00),10,2) 
end 

如果我改變的部分然後像

​​

也沒有錯誤。

但是對於我的完整SQL查詢 - 找不到錯誤。這裏 感謝

+0

什麼數據類型,則DEC()函數的返回? – Chandu 2012-07-07 17:28:28

回答

3

問題是dec功能CASE語句的其他部分返回十進制數據類型你是返回一個VARCHAR,因此這個問題。

在你的第二個版本 case when actualfinish is not null then 'Yes' else 'not' end

無論是whenelse因而是返回相同的數據類型的查詢運行正常。

更改您的其他發送一個十進制等效值,它應該執行良好。

更新:

使用此版本,如果你可以返回小數作爲一個字符串:

CASE 
    WHEN actualfinish IS NOT NULL THEN CHAR(DEC((TIMESTAMPDIFF(4, CHAR(actualfinish - reportdate))/60.00),10,2)) 
    ELSE 'not' 
END 
+0

昌都感謝,但如何解決這個呢?我的其他部分必須返回'不',以表明actualfinish爲空,然後我的firts部分必須返回浮點值以顯示差值的計算值。我真的必須有這種類型 - 浮動和字符串。那麼如何解決呢?謝謝 – Dejan 2012-07-07 17:43:33

+0

正如我所說的返回相同的數據類型我WHEN和ELSE是它的Decimal或VARCHAR凡是適合的要求 – Chandu 2012-07-07 17:45:48

+0

我可以以某種方式欺騙SQL查詢並將THEN部分中的這個十進制值轉換爲字符串值?那將是什麼正確的表達?謝謝 – Dejan 2012-07-07 17:48:33