SQL:按空列数排序

时间:2012-09-30 20:05:47

标签: sql sorting

我有一个SQL查询,显示结果列表。我的数据库中的每一行都有 20列而不是每列是必需的。我想要SQL查询的结果 按填充列数排序。顶部空行最少的行,底部空列最多的行。你们中的任何人都知道如何做到这一点吗?

我考虑过向表中添加一个额外的列,如果每次用户编辑行时都会更新,这个数字将指示空列的数量,我可以用它对列表进行排序。然而,这听起来像不必要的麻烦,但也许没有别的办法?我相信这里有人会知道!

谢谢,

桑德

2 个答案:

答案 0 :(得分:3)

您可以使用巨型案例声明在任何数据库中执行此操作:

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

答案 1 :(得分:2)

您可以按空列数量订购:

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

(注意行末尾的+:它只有一列,整数为空字段,按升序排序。)