关于一张表的sql统计。急急急
2011-12-15 12:54:56.000个人账户开立PN1201112151254560.00杨建不成功
2011-12-15 12:55:37.000个人账户开立PN1201112151255370.00杨建成功
2011-12-15 12:56:12.000个人账户开立PN1201112151255560.00刘君不成功
2011-12-15 12:56:53.000个人账户开立PN1201112151256520.00刘君不成功
2011-12-15 14:22:01.000大额支付 PN220111215142137 0.00杨建成功
2011-12-15 14:55:17.000大额支付 PN220111215145449 0.00杨建不成功
2011-12-15 14:57:19.000单位账户开立PN3020111215145706 0.00杨建不成功
2011-12-15 15:25:42.000单位账户开立PN3020111215152542 0.00杨建成功
2011-12-15 15:51:58.000挂失业务 PN1201112151551580.00杨建成功
2011-12-15 13:01:20.000大额支付 PN22011121513010050.00杨建不成功
2011-12-15 13:01:56.000大额支付 PN12011121513015650.00杨建不成功
2011-12-15 13:02:28.000大额支付 PN12011121513021650.00杨建不成功
2011-12-15 15:31:47.000单位账户开立PN1201112151531370.00杨建不成功
上面是表里面的数据,我要统计的sql是显示出 每个凭证号的时间最大的成功的记录,如果该凭证号没成功的记录就取出时间最大的不成功的那条记录。这个sql2005的语句杂写呢?大家帮帮忙,。急
[解决办法]
select distinct b.* from tb across apply (select top 1 * from tb where 凭证号=a.凭证号 order by 是否成功字段,时间字段 desc) b
[解决办法]
select * from (select no=row_number() over(partition by 凭证号 order by 是否成功字段,时间字段 desc),* from tb) twhere no=1
[解决办法]
;with cte as(select * from tb a where 状态='成功' not exists(select 1 from tb where 姓名=a.姓名 and 状态='成功' and 日期>a.日期))select * from tb a where 姓名 not in(select 姓名 from cte) and not exists(select 1 from tb where 姓名=a.姓名 and 日期>a.日期)union allselect * from cte