1

这是另一个问题的扩展:当记录在 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
4

1 回答 1

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;
于 2017-10-19T17:44:22.280 回答