【问题标题】:SQL Order By on multiple columns containing NullsSQL Order By 在包含 Null 的多个列上
【发布时间】:2021-04-08 21:00:19
【问题描述】:

我有一个包含多列的表,我想按表中的三列排序。我想按批订购,然后按单位订购,最后按编号订购。 Lot 和 Unit 可以包含空值(需要在底部列出),而 Number 列不包含空值。我尝试了一堆案例陈述,但没有给出预期的结果。 - 排序方式... Nulls last 不是一个选项。

Lot Unit Number
Null Null 500
Null Null 425
Null Null 424
Null 7 419
Null 9 450
25 Null 475
22 Null 486
22 Null 485
19 7 465
19 9 432

想要的结果:

Lot Unit Number
19 7 465
19 9 432
22 Null 485
22 Null 486
25 Null 475
Null 7 419
Null 9 450
Null Null 424
Null Null 425
Null Null 500

【问题讨论】:

标签: sql null sql-order-by case


【解决方案1】:

您可以通过检查空值来进行排序:

SELECT *
FROM yourtable
ORDER BY CASE WHEN lot IS NULL THEN 1 ELSE 0 END 
         , lot 
         , CASE WHEN unit IS NULL THEN 1 ELSE 0 END  
         , unit 
         , number 

【讨论】:

  • 完美!像魅力一样工作!
【解决方案2】:

您已标记您的问题 SQL,但未提及数据库。标准 SQL 有一种非常方便的方式来做你想做的事:

order by Lot nulls last, Unit nulls last, Number

并非所有数据库都支持nulls lastnulls first,但这是标准的SQL 解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多