我有以下SQL Server表
我想要从下表中最新的所有前4个不同的代码
记住我希望返回所有列而不仅仅是代码列.
sno city state country code date
1 new york NY US 1234 1/1/2013
2 Houston TX US 2234 1/6/2013
3 LA CA US 1123 1/2/2013
4 Chicago IL US 1244 1/3/2013
5 Brooklyn NY US 1234 1/4/2013
6 Dallas TX US 2234 1/5/2013
Run Code Online (Sandbox Code Playgroud)
我的以下选择查询返回重复的代码,但我想要不同的最新代码.
select top 4 * from table1 where code in (select distinct code from table1)
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
WITH topList
AS
(
SELECT sno, city, state, country, code, date,
ROW_NUMBER() OVER(PARTITION BY code ORDER BY DATE DESC) rn
FROM TableName
)
SELECT TOP 4 sno, city, state, country, code, date
FROM topList
WHERE rn = 1
ORDER BY DATE DESC
Run Code Online (Sandbox Code Playgroud)
OUTPUT
????????????????????????????????????????????????????????
? SNO ? CITY ? STATE ? COUNTRY ? CODE ? DATE ?
????????????????????????????????????????????????????????
? 2 ? Houston ? TX ? US ? 2234 ? 1/6/2013 ?
? 5 ? Brooklyn ? NY ? US ? 1234 ? 1/4/2013 ?
? 4 ? Chicago ? IL ? US ? 1244 ? 1/3/2013 ?
? 3 ? LA ? CA ? US ? 1123 ? 1/2/2013 ?
????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)