【问题标题】:SQL order by numeric and string attributes按数字和字符串属性排序的 SQL
【发布时间】:2013-01-28 18:36:46
【问题描述】:

我遇到的问题是通过查询关联一个包含数字和日期时间值的顺序,并将对 ASC 进行排序,并且还有一个字符串值需要按特定顺序从高到低排序。我能够在使用案例的查询中对优先级本身进行排序,但不能为其他值添加任何其他条件。另一个问题是,它们的排序顺序是在运行时决定的,因此顺序会发生变化。

单独排序优先级

SELECT [Task], [Start Date] AS Start_Date, [End Date] AS End_Date, [Priority], [Time Allowance] AS Time_Allowance, [Details] FROM [schedulerData0]
ORDER BY (CASE Priority
 WHEN 'Very High' Then 1  
 WHEN 'High' Then 2 
 WHEN 'Medium' Then 3 
 WHEN 'Low' Then 4 
 WHEN 'Very Low' Then 5
END)

尝试合并案例

SELECT [Task], [Start Date] AS Start_Date, [End Date] AS End_Date, [Priority], [Time Allowance] AS Time_Allowance, [Details] FROM [schedulerData0]
ORDER BY
-- numeric columns
CASE _orderby WHEN 'Time_Allowance' THEN Time_Allowance END ASC;
-- string columns
CASE _orderby Priority
 WHEN Priority = 'Very High' THEN 1,
 WHEN Priority = 'High' THEN 2,
 WHEN Priority = 'Medium' THEN 3,
 WHEN Priority = 'Low' THEN 4,
 WHEN Priority = 'Very Low' THEN 5;
-- datetime columns
CASE _orderby WHEN 'Start_Date' THEN Start_Date END ASC,
CASE _orderby WHEN 'End_Date' THEN End_Date END DESC;
END

目前有下面的声明,其属性由第一个第二个和第三个选择声明。因为这将对所有数字数据进行排序,但按字母排序优先级。

SELECT [Task], [Start Date] AS Start_Date, [End Date] AS End_Date, [Priority], [Time Allowance] AS Time_Allowance, [Details] FROM [schedulerData0] ORDER BY [" + firstSelect + "], [" + secondSelect + "], [" + thirdSelect + "]"

【问题讨论】:

    标签: sql sql-server sql-order-by


    【解决方案1】:

    试试这个。

    SELECT [Task], [Start Date] AS Start_Date, [End Date] AS End_Date, [Priority], [Time     Allowance] AS Time_Allowance, [Details] FROM [schedulerData0]
    ORDER BY (CASE Priority
      WHEN 'Very High' Then 1  
      WHEN 'High' Then 2 
      WHEN 'Medium' Then 3 
      WHEN 'Low' Then 4 
      WHEN 'Very Low' Then 5
    END), [Start Date] ASC, [End Date] DESC
    

    【讨论】:

    • 一旦 END 被击中后出现不正确的语法错误
    • @jamesmews 已更新,在 END 后遗漏了一个“)”并删除了最后一个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多