2014-02-26 94 views
0

如果這有點長,請致歉... 我在報表生成器3中從SQL 2012數據庫生成報表以顯示磁盤空間檢查結果列表。檢查每兩分鐘運行一次,顯然它會返回大量重複結果。有沒有辦法只返回顯示磁盤空間發生變化的結果?下面是我使用的查詢,結果它得到在報表生成器中返回唯一行

SELECT V.iValue AS 'Result', V.iDate AS 'Date/Time' 
FROM DataValues V 
WHERE idate BETWEEN @StartDate AND @EndDate ORDER BY iDate DESC 

Date/Time  Result  
    ...11:06  223 
    ...11:04  223 
    ...11:02  222 etc 

很多四處尋找我已經成功地查詢更改爲此

SELECT V.iValue AS 'Result', V.iDate AS 'Date/Time' FROM DataValues V 
    WHERE V.iValue IN (SELECT V.iValue FROM DataValues V GROUP BY V.iValue HAVING 
    COUNT(V.iValue)=1) AND F.iScale = 8 
    AND idate BETWEEN @StartDate AND @EndDate ORDER BY iDate DESC 

其中僅返回那裏有結果之後無重複記錄。我需要過濾掉有多個相同結果的行,但保留記錄結果的第一行。有人有建議嗎? (在實際查詢中有一些連接,我不認爲這裏是相關的,但可以在必要時發佈完整的東西)

回答

0

我將添加一個ROW_NUMBER函數,按結果分區並按日期/時間排序。

然後我會將整個SELECT換成外部SELECT或使用CTE,然後過濾其中ROW_NUMBER結果= 1。