1

我在 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
4

4 回答 4

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)
于 2012-06-06T15:00:18.753 回答
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
于 2012-06-06T15:00:49.577 回答
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 声明“结束”之后注意

于 2012-06-06T15:02:12.783 回答
0

这是答案......我想通了。

注意区别...

原文: ISNULL(sum(ISNULL(convert(smalldatetime,dModLast,101) BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end), 0), 0)

修订 ISNULL(sum(ISNULL(convert(smalldatetime,dModLast,101) BETWEEN '2012-03-01' AND '2012-03-10' then 1 else 0 end 时的情况, 0)),0)

于 2012-06-06T15:04:22.120 回答