私が抱えている問題は、数値と日時の値を含み、ASC をソートするクエリによる順序と、特定の順序で高から低にソートする必要がある文字列値を関連付けることです。ケースを使用してクエリで優先度自体をソートすることはできますが、他の値に他の条件を追加することはできません。もう 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)
ケースを組み合わせてみる
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
現在、最初の 2 番目と 3 番目の選択で示された属性を持つ以下のステートメントがあります。これにより、すべての数値データがソートされますが、アルファベット順にソートされます。
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 + "]"