两列去重复记录

来源:互联网 发布:毒品网络在线观看 编辑:程序博客网 时间:2024/05/22 09:40

原贴:点击打开链接


USE tempdbGOIF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #tempcreate table #temp(name1 varchar(10),name2 varchar(10),cnt int)SET NOCOUNT ONinsert into #temp values('A','B',8),('B','A',8),('G','M',5),('M','G',5),('G','U',8),('U','G',8)/*select * from #tempname1      name2      cnt---------- ---------- -----------A          B          8B          A          8G          M          5M          G          5G          U          8U          G          8*//*两个name之间都有一只值 cnt,但是像上面这样显示的话,算是重复了,两个name只保留一个值。如A与B的关系,只保留一行就行。*/ SELECT name1,name2,cnt FROM (    SELECT ROW_NUMBER()OVER(PARTITION BY CASE WHEN name1>name2 THEN name1+name2 ELSE name2+name1 END ORDER BY name1) AS rid, *     FROM #temp) a WHERE rid=1/*name1      name2      cnt---------- ---------- -----------A          B          8G          M          5G          U          8*/

原创粉丝点击