sql - 'itemview' 附近的存储过程语法不正确

sql - stored procedure Incorrect syntax near 'itemview'

declare @query nvarchar(4000)   

set @query='SELECT InsightsLogs.ContentItemType, COUNT(InsightsLogs.UserId) AS nbr, CONT_COMP.MAIN'
set @query= @query + ' FROM InsightsLogs INNER JOIN CONT_COMP ON InsightsLogs.K_Contact = CONT_COMP.K_CONTACT'
set @query= @query + ' WHERE  InsightsLogs.EventType =N"'itemview'" AND (InsightsLogs.K_Contact IS NOT NULL) AND (CONT_COMP.K_COMPANY <> 1) AND (CONT_COMP.MAIN = 1)'
--set @query= @query + ' AND (Date_Visite >= CONVERT(DATETIME, "' + @date1 + ' 00:00:00", 102))'
--set @query= @query + ' AND (Date_Visite < CONVERT(DATETIME, "' + @date2 + ' 00:00:00", 102))'
set @query= @query + ' GROUP BY dbo.InsightsLogs.UserId'
exec sp_executesql @query 

如何修改项目视图???总是相同的消息,itemview 附近的语法不正确

InsightsLogs.EventType =N"'itemview'"

谢谢

而不是double-quotes:

=N"'itemview'"

使用两个单引号:

=N''itemview''

不是很清楚你想在这里做什么或者你为什么需要动态sql。我怀疑您使用动态 sql 不是因为需要它,而是因为您不确定如何执行此操作。我试图对这个查询进行排序。请注意,通过使用一些格式和一些别名,这真的很容易看到发生了什么,而不是所有东西都堆积成一堵文本墙。

SELECT il.ContentItemType
    , COUNT(il.UserId) AS nbr
    , c.MAIN
FROM InsightsLogs il
INNER JOIN CONT_COMP c ON il.K_Contact = c.K_CONTACT
WHERE  il.EventType =N'itemview' 
    AND il.K_Contact IS NOT NULL 
    AND c.K_COMPANY <> 1
    AND c.MAIN = 1
    --AND (Date_Visite >= CONVERT(DATETIME, @date1 + ' 00:00:00', 102))
    --AND (Date_Visite < CONVERT(DATETIME, @date2 + ' 00:00:00', 102))
GROUP BY il.UserId , c.MAIN

现在,如果您需要将其作为存储过程,只需将此查询作为过程的主体即可。