首页 > 解决方案 > 每行仅取消嵌套一个重复值

问题描述

我有下表 -

ID    A1     A2     A3     A4     A5      A6
1    324    243    3432   23423  342     342
2    342    242    4345   23423  324     342

我可以取消嵌套这张表,让我计算所有数字,就像这样 -

324     2
243     1
3432    1
23423   1
342     3
242     1
4345    1
23423   1    

但是我如何让它只计算同一行中的数字 1 次。例如,这是我期待的输出 -

324     2
243     1
3432    1
23423   1
342     2 
242     1
4345    1
23423   1   

3422因为——

1)它在第一行。

2)它在第二行出现了2次,但我只想数一次。

标签: sqlpostgresql

解决方案


只需使用count(distinct)

select v.a, count(distinct t.id)
from t cross join lateral
     (values (a1), (a2), (a3), (a4), (a5), (a6)
     ) v(a)
group by v.a;

是一个 db<>fiddle。


推荐阅读