在SQL Server 2014中使用以下查询获取此错误。
SELECT
[Case]
,[Course]
,[Device]
,[IntegerValue]
,[Question]
,IFL.[QuestionSimplified]
,[Revision]
,[Script]
,[TextValue]
,[Timestamp]
,[Type]
,[Variable]
,[Wave]
FROM [dbo].[CosmosData] CD
Left Outer join [dbo].[ImportedFacilityList] IFL on CD.[Variable] = IFL.[Variablename]
where
CD.[Script] = 'CARD-F' and
(select * from [dbo].[CosmosData] where Variable = 'SURVEY_TYPE' and IntegerValue = '2')
当我运行上述查询时,我收到了beloiw错误,
Ms 4145,Level 15,State 1,Line 20 在预期条件的上下文中指定的非布尔类型的表达式,在')'附近。
请帮忙吗?
答案 0 :(得分:4)
您在where
子句中有这个:
and (select * from [dbo].[CosmosData] where Variable = 'SURVEY_TYPE' and IntegerValue = '2')
SQL需要布尔表达式。这通常通过使用=
或类似的比较运算符来形成。在你的情况下,我认为你只是exant exists
:
exists (select * from [dbo].[CosmosData] where Variable = 'SURVEY_TYPE' and IntegerValue = 2)
那就是说,你也可能想要一个关联条款。
注意:我从整数值中删除了单引号。仅对字符串和日期常量使用单引号。
答案 1 :(得分:0)
基于您在此表中使用大小写作为键的假设,您可以使用以下方法返回应用条件的cosmos数据中的所有行,并使用内部条件中的where子句中的select匹配它
SELECT
[Case]
,[Course]
,[Device]
,[IntegerValue]
,[Question]
,IFL.[QuestionSimplified]
,[Revision]
,[Script]
,[TextValue]
,[Timestamp]
,[Type]
,[Variable]
,[Wave]
FROM [dbo].[CosmosData] CD
Left Outer join [dbo].[ImportedFacilityList] IFL on CD.[Variable] = IFL. [Variablename]
where CD.[Script] = 'CARD-F'
and Case
IN
(select Case from [dbo].[CosmosData] where Variable = 'SURVEY_TYPE' and IntegerValue = '2')
希望有助于任何