将所有空列(具有零非空值的列)移动到表的最右侧

时间:2018-05-08 09:25:52

标签: sql postgresql

我有一张包含100列的表格。对于少数列,该值始终为null。我想将所有这些列(具有零非空值的列)移动到最右边,这样当我的用户看到表时,他们将首先看到可用的信息。

例如:test_table

**column1 | column2 | column3 | column4**
   a      | null    | null    |     1  
   b      | null    | null    |     2  
   c      | null    | null    |     3  

插入后,我想像下表一样制作test_table

**column1 | column4 | column2 | column3**
   a      |     1   | null    | null
   b      |     2   | null    | null
   c      |     3   | null    | null

2 个答案:

答案 0 :(得分:0)

查询表时会定义列显示的顺序。 如果希望这些列显示在结果集的右端,则需要在查询的SELECT部分​​中重新排序它们。

所以坚持你的榜样,而不是:

Select column1, column2, column3, column4 FROM test_table

你会:

Select column1, column4, column2, column3 FROM test_table

我不相信有一种方法可以动态地执行此操作,但由于您知道这些列将始终具有空值,因此您应该对此非常有信心。

答案 1 :(得分:0)

使用isnull和case语句 从Employee中选择distinct isnull(id,0) 当id为null时选择不同的大小写,然后将其他0结尾作为来自Employee的id