【问题标题】:SQL execution error - Unable to parse query textSQL 执行错误 - 无法解析查询文本
【发布时间】:2010-10-25 11:33:55
【问题描述】:

我正在尝试创建一份报告,并希望从“联系人”表中提取一些信息。我正在尝试根据一组标准提取与联系人相关的“顾问”以及拥有该顾问的联系人数量。这很好并且有效,但是,我想根据一组不同的标准提取第三列,这也是一个“计数”。这就是我遇到麻烦的地方。

目前我有以下状态“无法解析查询文本”:

SELECT  advisoridName AS Advisor,
  COUNT(*) WHERE (advisorid IS NOT NULL) AND (ContactType = 1) AND (StateCode = 0) AS 'Active Participants',
  COUNT(*) WHERE (advisorid IS NOT NULL) AND (ContactType = 1) AS 'Total Participants'
FROM Contact
GROUP BY  advisoridName, advisorid
ORDER BY  PDA

如果您能引导我朝着正确的方向前进,我们将不胜感激。

提前致谢

【问题讨论】:

    标签: sql tsql reporting-services count


    【解决方案1】:

    COUNT(*) 不是有条件的,至少在 TSQL 中不是。我建议使用SUM(CASE WHEN... - 像这样:

    SELECT  advisoridName AS Advisor,
      SUM(CASE WHEN (advisorid IS NOT NULL) AND (ContactType = 1) AND (StateCode = 0) 
               THEN 1
               ELSE 0
          END) AS 'Active Participants',
      SUM(CASE WHEN (advisorid IS NOT NULL) AND (ContactType = 1) 
               THEN 1
               ELSE 0
          END) AS 'Total Participants'
    FROM Contact
    GROUP BY  advisoridName, advisorid
    ORDER BY  PDA
    

    【讨论】:

      【解决方案2】:

      你可以用 COUNT 做同样的事情,但你不需要 GROUP BY

      SELECT COUNT (CASE when advisorid IS NOT NULL AND ContactType = 1 AND StateCode = 0 THEN AdvisorID END ) as ActiveParticipants,
      COUNT (CASE when advisorid IS NOT NULL AND ContactType = 1 THEN AdvisorID) as TotalParticipants
      FROM Contact
      ORDER By PDA
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-13
        • 1970-01-01
        • 1970-01-01
        • 2021-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多