以上查询有一定的缺陷 如:
BB 2005-01-24 800
BB 2005-01-24 2200
所以主键最好使用integer型,由小到大自动总加
这样就可以如下
select * from 表 where id in(
select id=min(id) from 表 group by name)
select *
from ( select NAME,DT ,max(money) as money
from tb1
group by NAME,DT
) t1
(select name,min(dt) as dt from tb1 group by name) t2
where t1.name = t2.name
and t1.dt = t2.dt
NAME NVARCHAR(2),
DT DATETIME,
MM INT
)
INSERT INTO TEST
SELECT 'AA','2005-01-21','1200' UNION
SELECT 'BB','2005-01-23','800' UNION
SELECT 'BB','2005-01-24','2200' UNION
SELECT 'AA','2005-01-26','1000' UNION
SELECT 'AA','2005-01-19','500' UNION
SELECT 'BB','2005-01-17','300' UNION
SELECT 'DD','2005-01-17','300'
SELECT t1.* FROM TEST T1 INNER JOIN (SELECT [NAME],MIN(DT)AS DT FROM TEST GROUP BY [NAME]) AS T2 ON T1.[NAME]=T2.[NAME] AND T1.DT=T2.DT
drop table test