首页 > 解决方案 > SQL - GROUP BY 所有可能的变量

问题描述

我一直在寻找一种方法来做到这一点,但我似乎无法找到解决方案。

如何在不从列 2 中删除所有可能的变量的情况下进行选择和分组,其中列 1 中的变量不存在变量?

Excel 示例

数据示例(左)- 我希望它如何(中)- 当前(右)

当我这样做时:


SELECT Column1, Column2, COUNT(*) 
FROM Table
GROUP BY Column1, Column2;

如果我使用这行代码,我将无法看到 column2 中每个变量 column1 的所有变量(我想要)。因为如果它们不存在,它将不会显示在结果中。

因此,我想查看 Column1 中的所有变量以及 Column2 中的所有 4 个可能变量,然后计算该组合存在的数量。

提前感谢您的帮助,希望我的问题很清楚。

标签: sqlteradata

解决方案


我认为你想要一个cross join然后left join和聚合:

select c1.column1, c2.column2, count(t.column1)
from (select distinct column1 from t) c1 cross join
     (select distinct column2 from t) c2 left join
     t
     on t.column1 = c1.column1 and t.column2 = c2.column2
group by c1.column1, c2.column2;

推荐阅读