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

时间:2018-03-14 13:40:54

标签: sql-server dynamic-sql

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 ???总是相同的消息,itemview附近的语法不正确

InsightsLogs.EventType = N&#34;&#39; itemview&#39;&#34;

thx

2 个答案:

答案 0 :(得分:1)

而不是双引号:

=N''itemview''

使用两个单引号:

  constructor() {
    this.socket = io(this.URL)
  }

  public getValue(): Observable<string> {
    let observable = new Observable<string>(observer => {
      this.socket.on('value', (data) => {
        let v = data['value'];
        observer.next(v)
      })

      return () => {
        this.socket.disconnect()
      }
    })

    return observable
  }

答案 1 :(得分:0)

不太清楚你在这里要做什么或为什么需要动态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

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