[英]How to get distinct count over multiple columns in SQL?
我有一张看起来像这样的桌子。 我想在三列中获得不同的计数。
ID | 第 1 列 | 第 2 栏 | 第 3 栏 |
---|---|---|---|
1 | 一个 | 乙 | C |
2 | 一个 | 一个 | 乙 |
3 | 一个 | 一个 |
我正在寻找的所需 output 是:
ID | 第 1 列 | 第 2 栏 | 第 3 栏 | 唯一计数 |
---|---|---|---|---|
1 | 一个 | 乙 | C | 3 |
2 | 一个 | 一个 | 乙 | 2 |
3 | 一个 | 一个 | 1 |
试试这是否有效
SELECT Count(*)
FROM (SELECT DISTINCT Column1 FROM TABLENAME);
在标准 SQL 中,您必须先 UNPIVOT,对 PIVOTed 结果进行计数(不同)分组,然后再次 PIVOT。
在最近的 ORACLE 版本中,您可以编写自己的多态表 Function 来执行此操作,传递表和列列表以计算 DISTINCT 值。
您想为此使用cross apply
。
select *
from t cross apply
(select count(distinct cnt) as unique_count
from (values(Column1),(Column2),(Column3)) t(cnt)) t2
ID | 第 1 列 | 第 2 列 | 第 3 列 | 唯一计数 |
---|---|---|---|---|
1 | 一个 | 乙 | C | 3 |
2 | 一个 | 一个 | 乙 | 2 |
3 | 一个 | 一个 | 1 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.