【问题标题】:SQL Case Order By specific orderSQL Case Order 按特定顺序
【发布时间】:2012-11-03 04:42:15
【问题描述】:

好的,我之前问过类似的问题,但我已经研究过了,并没有专门找到这个。 我有一张表,需要按字段 OptionName(NVarChar) 和 IsActive(BIT) 进行排序。

我需要 DDL 的结果按以下顺序排列:

Option A
Option B
Option C
Options that are Active, by OptionName ASC 
Option D
Options that are Inactive, by OptionName ASC 

目前为止

ORDER BY CASE WHEN PortalName = 'Company, Inc' THEN 0 ELSE 1 END,
         CASE WHEN PortalName = 'Setup' THEN 1 ELSE 2 END,
         CASE WHEN PortalName = 'Daily Routine' THEN 2 ELSE 3 END,
         CASE WHEN IsActive = 1 THEN 3 ELSE 4 END, 
         CASE WHEN PortalName = 'Master Option' THEN 4 ELSE 5 END,
         PortalName ASC

但这会返回结果为:

Option A
Option B
Option C
Option D
Options that are Active, by OptionName ASC 
Options that are Inactive, by OptionName ASC 

任何帮助都会很棒!

【问题讨论】:

  • 得到了答案:CASE WHEN PortalName = 'Master Option' THEN 9999 ELSE 5 END

标签: sql sql-order-by case


【解决方案1】:

试试,

ORDER BY CASE WHEN PortalName = 'Company, Inc' THEN 0 
              WHEN PortalName = 'Setup' THEN 1 
              WHEN PortalName = 'Daily Routine' THEN 2 
              WHEN IsActive = 1 THEN 3 
              WHEN PortalName = 'Master Option' THEN 4 
         ELSE 5 END,
         PortalName ASC

【讨论】:

  • 谢谢,这让它更干净了,但它把选项 D 按字母顺序放在活动选项集中。
  • @NJohns:尝试在此解决方案中交换 WHEN IsActive = 1WHEN PortalName = 'Master Option'(整行)。
【解决方案2】:

将 order by 的每个部分视为不同的列...对每个组件应用一个案例。首先获取第一部分......然后是第二部分。如果它不适用于第二部分,则让它始终具有相同的值...类似于...

ORDER BY 
  CASE WHEN PortalName = 'Company, Inc' THEN 1
       WHEN PortalName = 'Setup' THEN 2
       WHEN PortalName = 'Daily Routine' THEN 3
       WHEN PortalName = 'Master Option' THEN 4 ELSE 5 END,
  CASE WHEN IsActive = 1 THEN 1 ELSE 2 END,
  PortalName ASC

【讨论】:

  • 还是不行。 Mybe我会看看这是否不需要成为一个要求? :)
【解决方案3】:

得到答案:CASE WHEN PortalName = 'Master Option' THEN 9999 ELSE 5 END

【讨论】:

  • 为什么你输入了9999。它是否表示列号...?那么第 9999 列不存在
猜你喜欢
  • 2011-09-13
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
  • 2021-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多