在 order by 子句中指定的多个列的末尾显示空值

Displaying null balues at the end for more than one columns specified in order by clause

我正在使用 Firebird 数据库。我在 order by 子句中有一个问题。

我有 SQL,它为多个员工提供多个记录,即一个员工在 SQL 中有多个记录作为输出。

我在一个 order by 子句中有四列,我希望每列的空值都显示在每列的非空值之后。

我用谷歌搜索发现如果我使用

Order By Column1 Asc Nulls Last

第一列效果很好,但其余两列效果不佳。例如,对于剩下的这两个列,空值位于中间,即首先是一些非空值,然后是空值,然后是非空值。

我需要在每个员工的 order by 子句中指定的每四列的每个非空值的末尾显示空值。

我尝试 case when,然后 asc 按子句顺序对每一列进行排序,但没有给出预期的结果。

我建议在select子句中增加一列:

case 
  when Column1 is not null
   and Column2 is not  null 
   and Column3 is not  null 
   and Column4 is not  null 
     then 0 else 1 
end as scol

和 "scol" 依次为:

Order By scol, Column1 Asc Nulls Last, Column2 Asc Nulls Last, Column3 Asc Nulls Last, Column4 Asc Nulls Last

所有 4 个字段都不为空的行排在第一位