2014-03-31 38 views
0

以下查询在 处发生错误'CASE WHEN NOT LIKE'(Msg 156,Level 15,State 1,Line 14 )'LIKE' )SQL Query - 关键字'LIKE'附近的语法错误

SELECT  
TimeStamp, 
TimeStampNS, 
ISNULL(TagName, 'NoTag') AS TagName, 
Message, 
ConditionName, 
ISNULL(TagName, 'NoTag') + '.' + ConditionName AS Source, 
CENTUMMsgId, 
StationName, 
ISNULL(AlarmLevel,5) AS AlarmLevel, 
ActiveTime, 
ActorID, 
ISNULL(AlarmOff,0) AS AlarmOff, 
CASE WHEN NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1 ELSE 0 END AS RaiseAll, 
    CASE WHEN LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
    CASE WHEN CENTUMMsgId IN (4354, 4356, 4358, 4614) AND Message NOT LIKE '% ACK%' THEN 1 ELSE 0 END AS Normal, 
PlantHierarchy, 
'EXAOPC' AS SourceType 
FROM QHistorianData.dbo.vEXAOPCCSProcessAlarm 

。你们知道这是怎么回事......我想我有eveything正确那里。

非常感谢您的帮助。

回答

2

我想你在这里错过了属性名称:

CASE WHEN <ATTRIBUTE-NAME> NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1 ELSE 0 END AS RaiseAll, 
CASE WHEN <ATTRIBUTE-NAME> LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
CASE WHEN CENTUMMsgId ... 
+0

大声笑,你们是对的..傻我。谢谢 – user1034912

1
CASE WHEN **[MissingExpression]** NOT LIKE '% ACK%' AND CENTUMMsgId IN (4353, 4355, 4609) THEN 1 ELSE 0 END AS RaiseAll, 
CASE WHEN **[MissingExpression]** LIKE '% ACK%' THEN 1 ELSE 0 END AS Acknowledge, 
CASE WHEN CENTUMMsgId IN (4354, 4356, 4358, 4614) AND Message NOT LIKE '% ACK%' THEN 1 
ELSE 0 END AS Normal, 
PlantHierarchy, 

你错过了定义要与像

1

你缺少列名/表达式WHEN后进行比较的列。

CASE WHEN 'EXPRESSION' NOT LIKE '% ACK%' 
    AND CENTUMMsgId IN (4353, 4355, 4609) 
    THEN 1 ELSE 0 END AS RaiseAll, 
相关问题