2014-08-28 19 views
0

我想计算特定支持选项的行总数,其中行来自两个表,如CSPLineItem和SupportOption 。我使用下面的查询错误:在sql服务器中预期条件的上下文中指定的非布尔类型的表达式

SELECT DISTINCT sot.SupportOptionType_ID, 
    (Classic.NumberOfLines + MEN.NumberOfLines) TotalNumberOfLines 
FROM SupportOptionType sot WITH (NOLOCK) 
LEFT JOIN (
    SELECT sot.SupportOptionType_ID, 
     COUNT(li.CSPLineItem_ID) NumberOfLines 
    FROM CSPLineItem li WITH (NOLOCK) 
    INNER JOIN SupportOptionType sot WITH (NOLOCK) 
     ON sot.SupportOptionType_ID = li.SupportOptionType_ID 
    GROUP BY sot.SupportOptionType_ID 
    ) Classic 
LEFT JOIN (
    SELECT sot.SupportOptionType_ID, 
     COUNT(so.SupportOption_ID) NumberOfLines 
    FROM SupportOption so WITH (NOLOCK) 
    INNER JOIN SupportOptionType sot WITH (NOLOCK) 
     ON sot.SupportOptionType_ID = so.SupportOptionType_ID 
    GROUP BY sot.SupportOptionType_ID 
    ) MEN 

但我发现了以下错误接近最后一行:

在一个条件有望

任何人指定的上下文非布尔类型的表达式,请帮忙。

+0

你不是两个表连接在一起。 IE: - >)MEN ON MEN.SupportOptionType_ID = Classic.SupportOptionType_ID – Kahn 2014-08-28 10:29:01

+2

你正在子查询上执行'LEFT JOIN's,但没有为它们指定'ON'子句。 – 2014-08-28 10:29:03

回答

1

您需要的ON子句中添加:

SELECT DISTINCT sot.SupportOptionType_ID, (Classic.NumberOfLines + MEN.NumberOfLines) TotalNumberOfLines 
FROM SupportOptionType sot WITH (NOLOCK) 
LEFT JOIN 
(SELECT sot.SupportOptionType_ID,COUNT(li.CSPLineItem_ID) NumberOfLines 
FROM CSPLineItem li WITH (NOLOCK) 
INNER JOIN SupportOptionType sot WITH (NOLOCK) ON sot.SupportOptionType_ID = li.SupportOptionType_ID 
GROUP BY sot.SupportOptionType_ID 
) Classic 
ON sot.SupportOptionType_ID=Classic.SupportOptionType_ID 
LEFT JOIN 
(SELECT sot.SupportOptionType_ID,COUNT(so.SupportOption_ID) NumberOfLines 
FROM SupportOption so WITH (NOLOCK) 
INNER JOIN SupportOptionType sot WITH (NOLOCK) ON sot.SupportOptionType_ID = so.SupportOptionType_ID 
GROUP BY sot.SupportOptionType_ID 
)MEN 
ON sot.SupportOptionType_ID=MEN.SupportOptionType_ID 
0
SELECT distinct sot.SupportOptionType_ID, (Classic.NumberOfLines + MEN.NumberOfLines) TotalNumberOfLines 
FROM SupportOptionType sot WITH (NOLOCK) 
LEFT JOIN 
(SELECT sot.SupportOptionType_ID,COUNT(li.CSPLineItem_ID) NumberOfLines 
FROM CSPLineItem li WITH (NOLOCK) 
INNER JOIN SupportOptionType sot WITH (NOLOCK) ON sot.SupportOptionType_ID = li.SupportOptionType_ID 
GROUP BY sot.SupportOptionType_ID 
) Classic 
on sot.SupportOptionType_ID=Classic.SupportOptionType_ID 
LEFT JOIN 
(SELECT sot.SupportOptionType_ID,COUNT(so.SupportOption_ID) NumberOfLines 
FROM SupportOption so WITH (NOLOCK) 
INNER JOIN SupportOptionType sot WITH (NOLOCK) ON sot.SupportOptionType_ID = so.SupportOptionType_ID 
GROUP BY sot.SupportOptionType_ID 
)MEN 
on sot.SupportOptionType_ID=MEN.SupportOptionType_ID 
相关问题