0

我有一个显示结果列表的 SQL 查询。我数据库中的每一行都有大约 20 列,并不是每一列都是强制性的。我希望 SQL 查询的结果按填充的列数排序。顶部空列最少的行,底部空列最多的行。你们中有人知道如何做到这一点吗?

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

谢谢,

桑德

4

2 回答 2

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
于 2012-09-30T20:08:06.987 回答
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

(请注意+行尾的:它只有一列,其中包含空字段的整数计数,按升序排序。)

于 2012-09-30T20:06:52.310 回答