【问题标题】:How to order by multiple columns in sql如何在sql中按多列排序
【发布时间】:2019-01-23 16:24:40
【问题描述】:

我需要帮助来排序我的结果,可能需要结合案例陈述。请参阅显示现有输出、条件、所需输出的图像。为了方便而在 Excel 中展示,但实际上是在 SQL 中完成的。 ORDER BY 子句是我需要帮助的。

select 
distinct 
CONCAT(selection.Selid,' - ' ,Selection.Name,' - ', DevOfficer.Description,' - ', SchemeCount.[Number of Schemes],' Schemes - ',case when selection.Project=1 then '[Project] ' when selection.Project=0 then '[Selection] '  else 'Error' end,convert(varchar,selection.lastupdated,103)) [String]
, selection.selid
, selection.lastupdated 
,case when selection.Project=1 then '[Project]'
when selection.Project=0 then '[Selection]'
else 'Error' end
,selection.lastupdated
from selection 
inner join SelScheme on selection.SelID =selscheme.SelID 
inner join DevOfficer on selection.DevOfficer = DevOfficer.DevOfficerID 
inner join (select selscheme.selid ,count(selscheme.SchemeID) [Number of Schemes] from SelScheme group by SelScheme.SelID) SchemeCount on schemecount.SelID = Selection.SelID 
where selection.masterselid = 0 
order by 
--selection.lastupdated  desc,
case 
when selection.Project=1 then '[Project]'
when selection.Project=0 then '[Selection]' 
 else 'Error' End Desc
 ,selid desc
 ,selection.lastupdated

【问题讨论】:

  • 表格和代码应以文本形式提交
  • 在 order by 语句时,您似乎确实需要一些案例。 ORDER BY Type, CASE WHEN other conditions THEN the next field to order by and so on...
  • 你能提供表格和数据作为来自sql的文本吗

标签: sql conditional sql-order-by multiple-columns


【解决方案1】:

这是您需要的顺序:

order by type desc,
         id desc, 
         case when isdate(last_updated_date) then last_updated_date else 0 end desc 

对您需要的每个排序列使用 asc 和 desc 修饰符

【讨论】:

  • 这仍将首先按 ID 对项目进行排序。我想通过 lastupdated desc 对项目进行排序,并且不关心他们的 ID 的顺序
  • 如果我将 ID 放在 case 语句之后,它可以工作。即按类型、ID、lastupdated 排序。它之所以有效,是因为没有可供选择的最后更新日期。
【解决方案2】:

* 在代码 sn-p 添加到 OP 问题之前回答*

虽然我不确定 SQL 表名,甚至是实际的 SQL 字段名,但以下内容将起作用。 您需要根据优先级列出 ORDER BY 中的所有字段;

     SELECT
     [ID]
    ,[Type]
    ,[Last Updated Date]
    FROM [SCHEMA].[TABLENAME]
    ORDER BY [Type] ASC, [ID] DESC, [Last Updated Date] DESC

【讨论】:

  • 这仍然会先按 ID 排序项目,然后按 Lastupdated 排序,但我需要的是类型,如果选择则按 ID,但如果项目按日期排序。
  • 这将首先按 [Type] 排序。 “01。”出现在“02”之前。这就是为什么它是升序
  • 对不起,我是说之前,不是第一个。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多