繁体   English   中英

如何获得 SQL 中多列的不同计数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM