如果是单一记录,请不要在条件适用的情况下申请;如果有多个记录,请在条件适用的地方使用并返回单个记录

时间:2017-04-12 07:09:08

标签: sql oracle

我的查询是关于SQL的。

我有一张包含多个记录的表格,其中包含' ID号码'列可能重复。为了删除重复,我们已经放置了一个where条件,如果帐号为null,则不显示记录。但这是在跳过只有记录而没有帐号的记录。

如果只存在单个记录,我们不希望应用where条件。如果存在多个记录,则仅适用于应该应用的条件。

请帮忙。

样本表如下:

ID number   Name        Account number  Country
123456      Sam                100034   China
156789      Nicky              100045   Russia
156789      Nicky                       Russia
453638      John                        Peru
564433      Bret               100035   Alaska
132323      Peter              100067   Slovenia

我需要上表中的所有唯一值。因此,我将where条件设置为不返回帐号为空的记录。因此它返回ID号为156789的一条记录,但跳过ID号453638.因此,如果该ID号只存在一条记录,则不应用条件。希望我的问题很明确。

1 个答案:

答案 0 :(得分:1)

尝试使用count(*) overpartition by ...)`这样

select * from (
     select m.*, 
     count(*) over (partition by m.[ID number]) cnt
from MyTable as m) sel
where sel.cnt = 1 
or sel.[Account number] is not null