2012-09-30 44 views
0

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

我想过在表格中增加一个额外的列,如果每次用户编辑他们的行时都更新,这个数字将表示空列的数量,我可以用我的列表排序。然而,这听起来像不必要的麻烦,但也许没有其他办法?我敢肯定这里有人会知道!

感谢,

桑德

回答

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 
+0

两个头脑,一个虽然:Andomar认为同样的事情,它的工作!非常感谢! – user1555076

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 

(注意+在行的结尾:它与整数只有一个列空行数,按升序排序)。

+0

两个头脑,一个虽然:戈登认为同样的事情,它的工作!非常感谢! – user1555076