我有下表:
| a | b |
|---|---|
| 2 | 4 | x
| 2 | 5 |
| 3 | 1 | x
| 6 | 4 |
| 6 | 5 | x
| 7 | 5 |
| 7 | 4 |
|---|---|
我想选择最大数量的唯一对,其中a或b都不重复。所以x旁边的条目应该是select会抓取的。任何想法如何做到这一点?
目前我有一些SQL会做相反的事情,选择那些不唯一的SQL并删除它们但它没有像我想要的那样工作。这是我现在的SQL,但我想我会废弃它,并从我上面提到的角度开始研究它。
delete t
from #temp2 t
where (exists(select * from #temp2
where (b = t.b
and a < t.a))
or exists(select * from #temp2
where a = t.a
and (b < t.b and ) and
(not exists(select * from #temp2
where b = t.b
and a < t.a)
or not exists(select * from #temp2
where a = t.a
and b < t.b))
谢谢!
答案 0 :(得分:0)
我在这里假设非唯一且唯一是互斥的,并且将包含表格中的所有记录。如果是这样,请使用现有脚本,将其写入CTE,然后从源表中加入CTE,选择那些不在CTE中的记录。
With Non_Unique_Records as (
--Insert your existing script here
)
Select t.a
, t.b
From #temp2 t
Left Outer Join Non_Unique_Records CTE
on t.a = CTE.a
and t.b = CTE.b
Where CTE.b is null
然后只删除Select语句返回的记录。