如何爲每個使用sql查詢的行設置標誌1,2和3?通過訂購日期字段des/asc使用查詢的標誌設置
您的幫助是非常感謝。
對於如:
Id Name date flag 9278 david 02/12/2012 1 4343 sharon 21/11/2012 2 4783 elizabeth 17/11/2012 3 47846 john 08/10/2012 1 78347 chris 17/09/2012 2 37379 Joe 18/06/2012 3
如何爲每個使用sql查詢的行設置標誌1,2和3?通過訂購日期字段des/asc使用查詢的標誌設置
您的幫助是非常感謝。
對於如:
Id Name date flag 9278 david 02/12/2012 1 4343 sharon 21/11/2012 2 4783 elizabeth 17/11/2012 3 47846 john 08/10/2012 1 78347 chris 17/09/2012 2 37379 Joe 18/06/2012 3
你的問題是有點不清楚,但你可能需要使用ROW_NUMBER函數和模運算符的組合:
with temp as
(
select 9278 as num, 'david' as name, CONVERT(datetime, '02/12/12',3) as date
UNION
select 4343, 'sharon', CONVERT(datetime, '21/11/12',3)
UNION
select 4783, 'elizabeth', CONVERT(datetime, '17/11/12',3)
UNION
select 47846, 'john', CONVERT(datetime, '08/10/12',3)
UNION
select 78347, 'chris' , CONVERT(datetime, '17/09/12',3)
UNION
select 37379, 'Joe' , CONVERT(datetime, '18/06/12',3)
)
select *,
((ROW_NUMBER() OVER (ORDER BY date desc) + 2) % 3) + 1 as Flag
from temp
如果這些數據正在被一些編程語言所消耗,我可能會嘗試在那裏添加數字而不是在SQL代碼中。
+1漂亮的把戲,順序轉換爲1基礎。 – Tomek 2012-03-01 17:37:47
你如何確定需要1,2或3? – 2012-03-01 17:10:29
這個問題沒有意義,因爲您無法按照您在示例中描述的方式對這些記錄進行排名。請提供一個正確的示例,以便我們可以嘗試幫助您。 – 2012-03-01 17:14:05