2017-05-02 63 views
0

我使用以下查詢從4個不同日期檢索快照值:-1天(最近),-2天,-3天和-40天(尚未實現)。SSRS圖:從SQL查詢中檢索不同日期的值

SELECT [SnapshotDate] 
     ,[SnapshotKey] 
     ,[info1] 
     ,[info2] 
     ,[info3] 
FROM [Database].[dbo].[Values] 
WHERE [SnapshotDate] >= DATEADD(day,-3, GETDATE()) 
AND [SnapshotKey] = 'Some text here' 

這導致下面的圖:

enter image description here

該查詢是不完全正確,首先,因爲它表示4個值,只應表示在該點3。其次,我想顯示40天前的最後一張快照,如圖所示。

我已經嘗試了幾個不同的查詢,但還沒有設法弄清楚如何正確地做到這一點。

[SnapshotKey] = SELECT DATEADD(day,-40,getdate()) 

上面的查詢給了我理論上的正確答案。但是,當我在查詢中使用它時,沒有結果。我相信這可能是由於沒有日期轉換或我在查詢中使用「日」這一事實。我不確定。

有什麼建議嗎?

編輯:

我用下面沒有運氣(無結果),也試過:

CONVERT(date, [SnapshotDate]) = CONVERT(date, DATEADD(day,-40, GETDATE())) 
+0

我們可以有一些樣本數據嗎?這將有助於解決問題 – JonWay

回答

1

我不知道你的日期值是什麼,但我猜這運行報告5月2日。 如果這是正確的,那麼您需要更改範圍以排除日期差異爲零的位置。我個人在這種情況下使用DATEDIFF,因爲它更容易爲我形象化。

嘗試將where子句更改爲像這樣的東西。

WHERE (DATEDIFF(day, getdate(),[SnapshotDate]) BETWEEN -3 AND -1 
    OR DATEDIFF(day, getdate(), [SnapshotDate]) = -40) 
    AND [SnapshotKey] = 'Some text here' 
+0

這正是我所需要的。非常感謝! – krynil