我有一个显示结果列表的 SQL 查询。我数据库中的每一行都有大约 20 列,并不是每一列都是强制性的。我希望 SQL 查询的结果按填充的列数排序。顶部空列最少的行,底部空列最多的行。你们中有人知道如何做到这一点吗?
我考虑在表中添加一个额外的列,如果每次用户编辑他们的行时更新,这个数字将指示空列的数量,我可以用它对我的列表进行排序。然而,这听起来像是不必要的麻烦,但也许没有其他办法?我相信这里有人会知道的!
谢谢,
桑德
您几乎可以在任何带有巨大案例语句的数据库中执行此操作:
order by ((case when col1 is not null then 1 else 0 end) +
(case when col2 is not null then 1 else 0 end) +
. . .
(case when col20 is not null then 1 else 0 end)
) desc
您可以按空列的数量排序:
order by
case when col1 is null then 1 else 0 end +
case when col2 is null then 1 else 0 end +
case when col3 is null then 1 else 0 end +
...
case when col20 is null then 1 else 0 end
(请注意+
行尾的:它只有一列,其中包含空字段的整数计数,按升序排序。)