从表中选择不同的前4条记录

Hen*_*nry 3 sql sql-server

我有以下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)

任何帮助是极大的赞赏.

Joh*_*Woo 8

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)