2016-07-15 42 views
0

构建物中不支持我有,我想创建在SSRS数据集的查询,但我得到一个错误的说法,OVER SQL在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 Construct来解决这个问题?

+0

你使用哪种连接类型连接到SQL Server? – Mike

回答

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 
+0

谢谢史蒂芬,实际上,我已经使用的查询,即使抛出了不支持的错误后,给出了结果集。不过,我也尝试了你的查询,结果证明它会提升性能.... –