2012-06-06 69 views
1

我錯誤地放置了ISNULL()函數中的某些東西,並且需要另一組眼睛來找到它。我在這麼多我已經成爲brainlocked盯着(我知道什麼ISNULL()是,這只是一個簡單的語法錯誤)ISNULL()函數需要兩個參數?簡單的解決方案

(SELECT tn.teamtext, tn.teamid, ISNULL(sum(ISNULL(case when CONVERT(smalldatetime,dModLast,101) BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end), 0), 0) AS cnt3 
    FROM teamnames AS tn 
    LEFT OUTER JOIN caseaudit AS ca 
    ON tn.teamID = ca.referteamID2 
    WHERE ca.referteamid1 <> ca.referteamid2 AND isactive = 1 AND groupid = 18 AND accountid = 2 AND referteamid1 = 31 AND auditnote <> 'Suspend Case' 
    GROUP BY tn.teamtext, tn.teamid) AS c 
+3

什麼問題? –

+1

@ jpm0004,你的問題是模糊的,因爲它不明顯你在體內說明了你想要的幫助。我們不知道您是否真正理解了ISNULL()應該做什麼,或者您是否需要幫助來追蹤語法錯誤。不要陷入困境,下次試着幫助我們。 –

+0

好吧,我編輯它。我認爲這個問題是可以理解的,但是我明白它可能會讓人困惑。對不起大家!謝謝您的幫助! –

回答

2

ISNULL()功能需要兩個參數,你可以在這裏看到:

http://msdn.microsoft.com/library/ms184325.aspx

第一個是被測試的表達,第二是返回如果表達式測試的計算結果爲NULL的值。

你的第二個ISNULL()功能僅指定一個參數:

ISNULL(case when CONVERT(smalldatetime,dModLast,101) 
     BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end) 

你應該嘗試:

ISNULL((case when CONVERT(smalldatetime,dModLast,101) 
     BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end), 0) 
+0

謝謝你,先生! –

+0

+1這是一個更好的答案,並附有參考資料。 – Kev

1

試試這個:

(SELECT tn.teamtext, tn.teamid, ISNULL(sum(ISNULL(case when CONVERT(smalldatetime,dModLast,101) BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end, 0)), 0) AS cnt3 
    FROM teamnames AS tn 
    LEFT OUTER JOIN caseaudit AS ca 
    ON tn.teamID = ca.referteamID2 
    WHERE ca.referteamid1 <> ca.referteamid2 AND isactive = 1 AND groupid = 18 AND accountid = 2 AND referteamid1 = 31 AND auditnote <> 'Suspend Case' 
    GROUP BY tn.teamtext, tn.teamid) AS c 
+0

如果你解釋了什麼是錯誤的並可能引用參考資料,情況會更好。 – Kev

1

你有錯了地方的括號:

ISNULL(sum(ISNULL(case when CONVERT(smalldatetime,dModLast,101) BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end , 0)), 0) AS cnt3 

您的CASE聲明'結束'後的注意事項

0

下面是答案...我明白了。

發現其中的差別...

原文: ISNULL(SUM(ISNULL(情況下CONVERT(SMALLDATETIME,dModLast,101)之間的 '2012-03-01' 和 '2012-03-10',那麼1否則爲0端), 0), 0)

修訂 ISNULL(總和(ISNULL(情況下,當CONVERT(SMALLDATETIME,dModLast,101) '之間2012-03-01' AND '2012-03-10',那麼1個否則爲0端, 0)) ,0)

+0

發佈答案後......似乎還有其他3人在我之前回答......他們都是正確的。謝謝大家! –