im所具有的问题是关联一个order by查询,该查询包含数值和日期时间值,并且将对ASC进行排序,并且还具有需要按特定顺序从高到低排序的字符串值。我可以使用case对查询中的优先级本身进行排序,但不能为其他值添加任何其他条件。另一个问题是,排序顺序的选择是在运行时决定的,因此顺序会发生变化。
仅对优先级进行排序
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 + "]"
发布于 2013-01-28 09:52:54
尝尝这个。
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
https://stackoverflow.com/questions/14559207
复制相似问题