使用oracle sql

时间:2017-10-19 17:39:18

标签: sql oracle ranking-functions

这是另一个问题的扩展:How to display null value when the record is present more than one time in oracle sql

我有一个如下表格:

c_id    c_name     c_tax

1001    Element1   1 
1001    Element1   2
1001    Element2   1
1001    Element2   2
1002    Element3   null
1002    Element4   1
1002    Element4   2

我希望在第一个null中显示column(c_id),如果它出现多次,则根据以下条件在第三个column(c_tax)中显示是或否。

Element1有两个税1和2.因此,Element1应显示一次,c_tax应为是。 Element3没有税,因此应显示为null

我的输出应如下所示:

c_id    c_name     c_tax

1001    Element1   Yes 
null    Element2   Yes
1002    Element3   No
null    Element4   Yes

1 个答案:

答案 0 :(得分:1)

如果我理解正确:

select (case when row_number() over (partition by cid order by c_name) = 1 then cid end) as cid,
       c_name,
       (case when max(c_tax) is not null then 'yes' else 'no' end) as c_tax
from t
group by c_id, c_name
order by c_id, c_name;