报告生成器 - 查询返回错误结果

时间:2011-01-21 17:00:51

标签: sql sql-server-2005 reporting-services

我已经设置了一个报告项目,我希望获得我的表的统计信息,然后将其集成到Web服务中。但是对于以下查询,我得到的结果不正确,我会在下面注明:

1 - 获取给定日期的新条目数

 SELECT COUNT(*) AS RecordsCount,CAST(FLOOR(CAST(dateadded AS float)) 
 AS datetime)as collectionDate 
 FROM TFeed GROUP BY CAST(FLOOR(CAST(dateadded AS float))
 AS datetime) order by collectionDate

工作正常,我可以成功地将其放入条形图中。

2 - 获取过去10天内给定客户请求的每个searchterm最高记录的前10个搜索引擎

SELECT TOP 10 searchterm, clientId, COUNT(*) AS TermResults FROM TFeed 
where dateadded > getdate() - 10 GROUP BY 
searchterm,clientId order by TermResults desc

不起作用 如果我在数据库中查询报告中返回98的那些术语之一,则数据库中的结果为984。

3 - 我也需要在给定的一天内获得每个客户的新记录数。

此外,我想知道是否可以将这些查询放入一个报告中,而不是每个查询的单独报告,这不是一个大问题,但之后不得不剪切并粘贴到一个文档中是乏味的。

赞赏任何想法

1 个答案:

答案 0 :(得分:2)

对于#2,

WITH tmp as
(
 SELECT clientId, searchTerm, COUNT(1) as TermResults,
   DENSE_RANK() OVER (partition by clientId
    ORDER BY clientId, COUNT(1) DESC) as rnk
 FROM TFeed
 WHERE dateadded > GETDATE() - 10 
 GROUP BY clientId, searchterm 
)
SELECT *
FROM   tmp
WHERE rnk < 11

USE RANK()如果你想跳过排名,如果有两个匹配(如果让我们说term1和term2具有相同的计数,它们都是排名1,下一个排名将排​​在第3位而不是第2位< / p>

对于#3,
您可以在一个报告中定义多个数据集。然后,您只需创建三个图表/表格并将其与各自的数据集相关联