2013-08-07 56 views
0

我有一個查詢分區和排名「註釋」記錄,按ID_Task(用戶爲每個任務添加註釋)對它們進行分組。我想按日期對筆記進行排名,但我也想對其進行限制,以便它們排在兩個日期之間。SQL「over」分區兩個值之間的WHERE日期

我使用SQL Server 2008中到目前爲止,我的選擇看起來是這樣的:

SELECT Note.ID, 
     Note.ID_Task, 
     Note.[Days], 
     Note.[Date], 
     ROW_NUMBER() OVER (PARTITION BY ID_Task ORDER BY CAST([Date] AS DATE), Edited ASC) AS Rank 
     FROM 
     Note 
     WHERE 
     Note.Locked = 1 AND Note.Deleted = 0 

現在,我認爲如果我把WHERE子句在底部,但他們仍然會有行列,我可能會也可能不會獲得等級1的物品,因爲它可能會被過濾掉。那麼有沒有辦法我只能分配記錄在哪裏,忽略所有其他的?我想我可以劃分一個子查詢。

其意圖是使用排名編號在另一個查詢中查找每個任務的最新備註。因此,在該查詢中,我將加入此結果WHERE等級= 1。

回答

3

row_number()運行where。您總能獲得行1

例如:

declare @t table (id int) 
insert @t values (3), (1), (4) 
select row_number() over (order by id) 
from @t 
where id > 1 

此打印:

1 
2 
+0

它呢?這真是個好消息。謝謝。 – Robinson