首页 新闻 搜索 专区 学院

sql 消除重複行

0
悬赏园豆:15 [待解决问题]

如下表,結束時間TimeEnd相同的行,只保留開始時間TimeStart最近的一行?

EmpNO Name Date TimeStart TimeEnd Mins
1001 TEST 2013/7/9 11:20:46 11:45:22 25
1001 TEST 2013/7/9 11:44:06 11:45:22 1
1001 TEST 2013/7/9 07:30:55 11:45:22 255
1001 TEST 2013/7/9 11:20:46 17:49:55 389
1001 TEST 2013/7/9 11:44:06 17:49:55 365
sql
sirili的主页 sirili | 初学一级 | 园豆:44
提问于:2013-08-08 11:41
< >
分享
所有回答(4)
1

SELECT * FROM table1 a WHERE 1>(SELECT COUNT(*) FROM table1 b WHERE a.TimeEnd=b.TimeEnd AND b.TimeStart>a.TimeStart)

田林九村 | 园豆:2367 (老鸟四级) | 2013-08-08 12:22
0
SELECT * FROM
(select *,row=row_number() over (PARTITION BY timeEnd ORDER BY timestart DESC)
 FROM Tmp
AS t where t.row=1
幻天芒 | 园豆:36662 (高人七级) | 2013-08-08 12:55

感觉这种方式更容易理解

支持(0) 反对(0) mifeng2012 | 园豆:269 (菜鸟二级) | 2013-08-09 11:11

@mifeng2012: 呵呵~

支持(0) 反对(0) 幻天芒 | 园豆:36662 (高人七级) | 2013-08-09 12:08
0

select b.* from tableName as b inner join

(select a.empno,a.name,a.date,a.timeend,min(a.Mins) as t1 from tableName as a group by a.empno,a.name,a.date,a.timeend)  on a.t1 = b.Mins

TerryChan | 园豆:206 (菜鸟二级) | 2013-08-08 13:26
0

按照TimeEnd字段分组,然后按TimeStart逆序排序。

 

SELECT * FROM 表名 group by TimeEnd order by TimeStart DESC

零下三度 | 园豆:221 (菜鸟二级) | 2013-08-08 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册