模拟表格
我需要从第一个表中删除重复记录。如果我们有重复的address_num,例如100,我们将使用AddressType" Home"行。
请注意,address_num不包含3个或更多的副本;它们要么在表格中出现一次,要么两次。例如,address_num 200出现一次。因此,我们只是按原样抓住它。
ID列是主键。
具有正确复选标记的第二个表是结果表。如何编写打印出第二个表的oracle SQL查询?
答案 0 :(得分:2)
您可以使用row_number()
并智能使用order by
:
select t.*
from (select t.*,
row_number() over (partition by address_num
order by (case when AddressType = 'Home' then 1 else 0 end) desc
) as seqnum
from table t
) t
where seqnum = 1;
答案 1 :(得分:0)
类似的东西:
SELECT id, address_num, ...
FROM (
SELECT id, address_num, ...
, row_number() over (partition by address_num
order by addresstype) as rn
FROM T
) AS X
WHERE rn = 1
答案 2 :(得分:0)
仅选择每组Dupes中ID最低的行。
Select * From MockUpTable m
Where Id =
(Select Min(id)
From MockUpTable
Where address_num = m.address_num)