【问题标题】:OVER SQL Construct not supported in SSRSSSRS 不支持 OVER SQL 构造
【发布时间】:2016-07-15 04:56:17
【问题描述】:

我有一个查询,我试图在 SSRS 中创建一个数据集,但我收到一条错误消息,

The OVER SQL construct or statement is not supported.

我使用的查询如下:

SELECT AM, REP, PRIM_SPEC, SUM(TOT_CALL)
FROM (
       SELECT AM, REP, SUM(TOT_CALL) as TOT_CALL, 
       CASE 
           WHEN ROW_NUMBER() OVER (PARTITION BY REP ORDER BY SUM(TOT_CALL) DESC) > 5 
           THEN 'Other'
           ELSE prim_spec
       END AS prim_spec
       FROM DEMO_CALL
       WHERE PERIOD >= @Mese
       AND (REP IN (@REP)) 
       AND (AM = @AM)
       GROUP BY AM, REP, prim_spec
) A
GROUP BY AM, REP, PRIM_SPEC
ORDER BY 1,2,4 DESC

我如何使用我的 OVER SQL 构造来解决这个问题?

【问题讨论】:

  • 您使用哪种连接类型连接到 SQL Server?

标签: sql-server-2014 window-functions ssrs-2014


【解决方案1】:

这不是 SSRS 的问题,而是 SQL 语句本身的问题。在生成之前,您无法比较 ROW_NUMBER。试试这个:

SELECT distinct AM, REP, TOT_CALL, 
CASE 
   WHEN RN > 5 
   THEN 'Other'
   ELSE prim_spec
  END AS prim_spec
FROM (
 SELECT AM, REP, SUM(TOT_CALL) as TOT_CALL, ROW_NUMBER() OVER (PARTITION BY REP ORDER BY SUM(TOT_CALL) DESC) as RN
 FROM DEMO_CALL
 WHERE PERIOD >= @Mese
   AND (REP IN (@REP)) 
   AND (AM = @AM)
 GROUP BY AM, REP
) DEMO_CALL
GROUP BY AM, REP, prim_spec
ORDER BY 1,2,4 DESC

【讨论】:

  • 感谢 steven,实际上,即使在抛出不支持的错误后我也使用过的查询给出了结果集。但是,我也尝试了您的查询,结果证明它可以提高性能....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 2012-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多