问一个SQL语句的写法
有一个表TTT
ID Money DT
10001 1000 2007-01
10002 999 2007-01
... ... .....
11003 5 2007-01
10001 1000 2007-02
... ... ...
11000 2 2007-02
ID不重复 Money是钱数 DT是时间年和月
Money是排好续的
怎么显示按照时间只显示前5个
ID Money DT
10001 1000 2007-01
10002 999 2007-01
10003 998 2007-01
10004 997 2007-01
10005 996 2007-01
10001 1000 2007-02
10002 999 2007-02
10003 998 2007-02
10004 997 2007-02
10005 996 2007-02
10001 1000 2007-03
10002 999 2007-03
10003 998 2007-03
10004 997 2007-03
10005 996 2007-03
[解决办法]
select * from TTT a where ID in (select top 5 ID from TTT where DT = a.DT)
[解决办法]
declare @TTT table (ID int, Money int, DT varchar(10))
insert @TTT
select '10001 ', '1000 ', '2007-01 ' union all
select '10002 ', '999 ', '2007-01 ' union all
select '10003 ', '998 ', '2007-01 ' union all
select '10004 ', '997 ', '2007-01 ' union all
select '10005 ', '996 ', '2007-01 ' union all
select '10006 ', '996 ', '2007-01 ' union all
select '10007 ', '996 ', '2007-01 ' union all
select '10008 ', '996 ', '2007-01 ' union all
select '10001 ', '1000 ', '2007-02 ' union all
select '10002 ', '999 ', '2007-02 ' union all
select '10003 ', '998 ', '2007-02 ' union all
select '10004 ', '997 ', '2007-02 ' union all
select '10005 ', '996 ', '2007-02 ' union all
select '10006 ', '996 ', '2007-02 ' union all
select '10001 ', '1000 ', '2007-03 ' union all
select '10002 ', '999 ', '2007-03 ' union all
select '10003 ', '998 ', '2007-03 ' union all
select '10004 ', '997 ', '2007-03 ' union all
select '10005 ', '996 ', '2007-03 ' union all
select '10006 ', '996 ', '2007-03 '
--测试
select * from @TTT a where ID in (select top 5 ID from @TTT where DT = a.DT)
/*
IDMoneyDT
--------------
1000110002007-01
100029992007-01
100039982007-01
100049972007-01
100059962007-01
1000110002007-02
100029992007-02
100039982007-02
100049972007-02
100059962007-02
1000110002007-03
100029992007-03
100039982007-03
100049972007-03
100059962007-03
*/