这是另一个问题的扩展: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
答案 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;