日期:2014-05-19  浏览次数:20422 次

根据类别分组后找出时间最近的ID值


ID   SID   DTIME
1       2     NULL
2       1     2007-10-1
3       1     2007-7-1
4       2     2007-9-10
5       2     2007-2-1
6       3     2007-10-1

就是这样一组数据
根据SID分组找出时间(如果时间为空,算最近)最近的ID值,按SID排序
要的结果如下:
ID   SID   DTIME
2       1     2007-10-1
1       2    
6       3     2007-10-1

新人,大家给指点一下

------解决方案--------------------
SELECT * FROM T1 A WHERE NOT EXISTS(SELECT 1 FROM T1 WHERE A.SID=SID AND ISNULL(A.DTIME, ' ')> DTIME )
ORDER BY SID

ID SID DTIME
------ ------ ----------
2 1 2007-10-1
1 2
6 3 2007-10-1

(所影响的行数为 3 行)
------解决方案--------------------
兄弟,你的通不过,要去掉也只能这样:
select * from tb5 A where not exists(select 1 from tb5 B where A.SID=B.SID and A.DTIME <isnull(B.DTIME, '9999-12-31 ')) order by SID