【问题标题】:Incorrect syntax near the keyword 'SELECT' using IN clause使用 IN 子句的关键字“SELECT”附近的语法不正确
【发布时间】:2018-10-21 04:43:38
【问题描述】:

我的查询有问题,我正在尝试使用来自 SQL 的数据来做一个数据透视表,我想总结一个表中自 2000 年以来所有年份的数字。

这是我的查询

SELECT 
    * 
FROM
    (SELECT 
         Vendor_code, Vendor_name, Ord_date, SubTot, 
         DateRecieved, CurrencyCode, YearReceived
     FROM 
         [BL_CUSTOM PO HISTORY SUMMARY]) AS S
PIVOT
    (SUM(S.SubTot) 
     FOR s.YearRecived IN (SELECT STUFF((SELECT ', ' + cast(year as VARCHAR(10)) FROM [BL_CUSTOM YEAR COUNT] FOR XML PATH('')),1,1,'')) ) as pvt

我收到以下错误:

消息 156,第 15 级,状态 1,第 33 行
关键字“SELECT”附近的语法不正确。

消息 102,第 15 级,状态 1,第 33 行
')' 附近的语法不正确。

【问题讨论】:

  • 那行不通。您需要使用动态 SQL 构造查询。
  • 编辑您的问题并提供示例数据和所需结果。
  • 你为什么要塞岁月? IN 只读取匹配的行和一个实体...

标签: sql-server pivot


【解决方案1】:

参考https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017中的语法 我相信你的询问, SELECT STUFF((SELECT ', ' + cast(year as VARCHAR(10)) FROM [BL_CUSTOM YEAR COUNT] FOR XML PATH('')),1,1,'')) 导致问题。

【讨论】:

    猜你喜欢
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多