如何使用数据透视查找填充列最多的记录?

Posted

技术标签:

【中文标题】如何使用数据透视查找填充列最多的记录?【英文标题】:How can I use pivot to find the records with the most columns populated? 【发布时间】:2022-01-04 14:26:46 【问题描述】:

我有一个问题,我有 5 列。

我想要做的是在最后加上一个没有空值的列数。

我正在尝试使用数据透视,因为这似乎是最合乎逻辑的 SQL 子句。对此有什么想法吗?我在很多情况下都没有使用过 Pivot,所以这对我来说是新的。

【问题讨论】:

【参考方案1】:

内联枢轴/条件聚合和COUNT 似乎是您想要的。由于所有列都有不同的数据类型,因此您还需要使用一些 CASE 表达式。像这样的:

SELECT ID,
       a,
       ...
       (SELECT COUNT(V.C)
        FROM (VALUES(CASE WHEN a IS NOT NULL THEN 1 END),
                    (CASE WHEN b IS NOT NULL THEN 1 END),
                    (CASE WHEN c IS NOT NULL THEN 1 END),
                    (CASE WHEN d IS NOT NULL THEN 1 END),
                    (CASE WHEN e IS NOT NULL THEN 1 END),
                    (CASE WHEN f IS NOT NULL THEN 1 END))V(C)) AS NonNullColumns
FROM dbo.YourTable;

【讨论】:

我不明白 V(c) 别名。当我在小提琴中运行它时,我遇到了一些语法错误。 dbfiddle.uk/… f 应该是 f, @Axwack 。查询中的列需要用逗号分隔。如果您修复了您引入的印刷错误,则查询可以正常工作:db<>fiddle

以上是关于如何使用数据透视查找填充列最多的记录?的主要内容,如果未能解决你的问题,请参考以下文章

excel中数据透视表,如何将空白的地方隐藏掉

如何添加多对多的额外数据透视列?

Excle数据透视表如何按照地区交替填充背景颜色

在另一个表 Laravel 中查找具有数据透视表中所有 id 的记录

Excle数据透视如何用含有单元格的数据来创建数据透视

如何在python中对两列进行透视和排序?