2011-01-21 117 views
0

我已经设置了一个报告项目,我希望获取我的表的统计信息,并在稍后将其集成到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 searchterms每一个给定的客户端请求的搜索关键词的最高记录,在最近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 - 我还需要获取每个客户端在特定日期的新记录数。

另外我想知道是否有可能将这些查询放入一个报告中,而不是针对每个查询的单个报告,这并不是什么大问题,但之后必须剪切并粘贴到一个文档中是很繁琐的。

任何想法表示赞赏

回答

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 

使用RANK(),如果你想跳过一个级别,如果有两场比赛(如果让我们说字词1和字词2具有相同数量的算,他们都是1级及以下期限将被排在第3,而不是第二

对于#3,
你可以在一个报告中定义多个数据集。然后你只需创建三个图表/表和相关的那些w^ith他们各自的数据集

+0

非常有帮助,在sql server中很好用,但在报表生成器中,'<'生成错误,非法语法,期望有效的起始名;;将尝试找到解决办法。 – vbNewbie 2011-01-24 17:46:07