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