运行此查询时收到错误消息“'(' 附近的语法不正确”

Posted

技术标签:

【中文标题】运行此查询时收到错误消息“\'(\' 附近的语法不正确”【英文标题】:Getting error message "Incorrect syntax near '(' " when running this query运行此查询时收到错误消息“'(' 附近的语法不正确” 【发布时间】:2017-12-09 04:39:33 【问题描述】:

试图创建一个数据透视表来显示在 2000、2001、2004、2005、2006、2008、2010、2012、2015 年采取每项保单的保单名称和客户数量

Select NAME, [2000], [2001], [2004], [2005], [2006], [2008], [2010], [2012], [2015] 
  from (
          select policy.name, year(customer_policy.policy_start_date) 
            from policy 
            join customer_policy 
              on policy.id = customer_policy.policy_id 
        group by policy.name, customer_policy.policy_start_date
       ) as SourceTable
  PIVOT
      (
      count(policy.name) for year(customer_policy.policy_start_date) 
        in ([2000], [2001], [2004], [2005], [2006], [2008], [2010], [2012], [2015])
       ) As PivotTable;

我得到:

Incorrect syntax near '(' 

【问题讨论】:

【参考方案1】:

我认为您只需要列别名和一些摘要:

Select NAME , [2000], [2001], [2004], [2005], [2006], [2008], [2010], [2012], [2015]
from (select p.name, year(cp.policy_start_date) as yr
      from policy p join
           customer_policy cp
           on p.id = cp.policy_id
      group by p.name, cp.policy_start_date
     ) as SourceTable
PIVOT (count(*)) for yr in ( [2000], [2001], [2004], [2005], [2006], [2008], [2010], [2012], [2015] ) ) As PivotTable

【讨论】:

存在语法错误,但正在解决所有得到结果的错误。 但是当不存在值时需要得到'0'而不是null @himanshu 添加到选择列表Select NAME , coalesce([2000],0), coalesce([2001],0) ... 选择 NAME,isNull([2000],0) 为 [2000],isNull([2001],0) 为 [2001],.....

以上是关于运行此查询时收到错误消息“'(' 附近的语法不正确”的主要内容,如果未能解决你的问题,请参考以下文章

消息 102,级别 15,状态 1,第 3 行“,”附近的语法不正确 [重复]

加入子查询时,我的别名附近的语法不正确?

我收到错误“关键字附近的语法不正确'''

SQL 命令错误:“4”附近的语法不正确 [重复]

SQL Server 中的 PIVOT 不支持 Select 语句

SqlDataException:'=' 附近的语法不正确