2011-11-18 215 views
0

有没有人知道这个查询有什么问题?我正在尝试在同一台服务器上为其他数据库执行内连接。SQL查询错误在预期条件的内容中指定的非布尔类型的表达式

SELECT b.company, i.CONCOM, 
    COALESCE (SUM(CASE WHEN C.CATEGORY_ID = '30' THEN 0 ELSE t .LOGMINS END), 0) AS TotalWithoutNew, 
    COALESCE (SUM(t.LOGMINS), 0) AS TotalAllId 
FROM helpdesk3.dbo.INQUIRY AS i 
INNER JOIN [Check].[dbo].[tbl_companies] As B ON 
    i.CONCOM, B.company 
INNER JOIN TIMELOG AS t ON 
    t.INQUIRY_ID = i.INQUIRY_ID 
INNER JOIN PROD AS P ON 
    i.PROD_ID = P.PROD_ID 
INNER JOIN CATEGORY AS C ON 
    P.CATEGORY_ID = C.CATEGORY_ID 
WHERE (DATEPART(yyyy, ESCDATE) =2011) 
GROUP BY i.CONCOM 
ORDER BY totalwithoutnew desc 
+1

是否有任何错误或意外结果? –

+0

我希望实际查询在't'('ELSE t .LOGMINS')之后不包含“空格”字符,因为它在问题中可见。 –

+0

对不起,这是一个格式错误 - 消息4145,级别15,状态1,行3的查询错误 在接近','的预期条件的上下文中指定的非布尔类型的表达式。在我正在运行的查询中,第3行是此问题中的第5行和第6行。查询工作正常之前,我把第一个内部联接! – Trinitrotoluene

回答

4

你的第一个加入

INNER JOIN [Check].[dbo].[tbl_companies] As B ON 
     i.CONCOM, B.company 

有列列表,而不是连接谓词。你可能意思是i.CONCOM = B.company

另一个问题可能是您的表tbl_companies的完全限定名称。如上所述article

要引用一列,有三种选择:完全限定,部分限定和不合格。全限定名(写作db_name.tbl_name.col_name)是完全指定的。部分限定名称(写作tbl_name.col_name)引用指定表中的列。一个非限定名称(简写为col_name)引用任何表格由周围的上下文指示。

+0

@F复制你的答案并偷走你的信用。他这样做,他试图对我也这样做。 +1从我 –

+0

@ t-clausen.dk这是错误的。 –

+0

@aF非常有趣的是,我把你投给你并写下我的评论后,你删除了这个问题的答案。 http://stackoverflow.com/questions/8182601/how-to-set-a-value-to-true-or-false-by-null-check-in-tsql/8182893#8182893 –

0

是不是这样的:

INNER JOIN [Check].[dbo].[tbl_companies] As B ON 
    i.CONCOM, B.company 

YPU应该有这样的:

INNER JOIN [Check].[dbo].[tbl_companies] As B ON 
    i.CONCOM = B.company 
+1

现货 - 谢谢! – Trinitrotoluene

+0

你再次窃取答案! –

相关问题