我有一樣的數據表:從GROUP BY和ORDER BY在查詢中選擇頂1
ID Field_name change_date prev_value current_value
1 USER_NAME 01/01/2013 test test11
1 USER_NAME 04/02/2013 test11 test12
2 USER_GENDER 06/01/2013 M F
2 USER_GENDER 02/01/2013 F M
當我通過FIELD_NAME和秩序由CHANGE_DATE組,我會得到這樣的
ID Field_name change_date prev_value current_value
2 USER_GENDER 06/01/2013 M F
2 USER_GENDER 02/01/2013 F M
1 USER_NAME 04/02/2013 test11 test12
1 USER_NAME 01/01/2013 test test11
現在我需要爲每個field_name選擇前1行。請建議
感謝
編輯:
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Field_name)
from
(
select Field_name,change_date,prev_value,current_value
from
(select *,
row_number() over (partition by Field_name order by change_date desc) as
ranker from tbl_User
)Z
where ranker = 1 and ID = '1'
)
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
預期輸出:
ID USER_GENDER USER_NAME
2 M
1 test11
由definiti你已經有了''''''''''''''''''field_name',所以返回的每一行對於'field_name'應該是唯一的。如果循環遍歷結果,每個'field_name'都會有最高的結果。 – Aiias
不,我得到的所有行,但分組,並排序 – user1882705
是你的ID列錯誤,或者你真的有多行共享一個ID? – mikegreen