2014-03-31 40 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, 
相關問題