2011-01-21 118 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