とりわけレコード ステータス列を返すクエリがあります。レコード ステータス列には、「アクティブ」、「削除済み」などの値がいくつかあります。
結果を「アクティブ」、「削除済み」、などの順に並べる必要があります...
私は現在、レコードの各セットを取得してから UNION ALL を取得する CTE を作成しています。クエリを実行するためのより良い動的な方法はありますか?
ありがとうございました、
とりわけレコード ステータス列を返すクエリがあります。レコード ステータス列には、「アクティブ」、「削除済み」などの値がいくつかあります。
結果を「アクティブ」、「削除済み」、などの順に並べる必要があります...
私は現在、レコードの各セットを取得してから UNION ALL を取得する CTE を作成しています。クエリを実行するためのより良い動的な方法はありますか?
ありがとうございました、
ステータス値をさらに表示するには、次のようにします。
WITH StatusOrders
AS
(
SELECT StatusOrderID, StatusName
FROM (VALUES(1, 'Active'),
(2, 'Deleted'),
...
n, 'last status')) AS Statuses(StatusOrderID, StatusName)
)
SELECT *
FROM YourTable t
INNER JOIN StatusOrders s ON t.StatusName = s.StatusName
ORDER BY s.StatusOrderID;
CASE
ここで使用できます
ORDER BY CASE WHEN Status = 'Active' THEN 0 ELSE 1 END ASC
しかし、より多くの値がstatus
あり、ソートしたい場合Active
はDELETE
ORDER BY CASE WHEN Status = 'Active' THEN 0
WHEN Status = 'Deleted' THEN 1
ELSE 2
END ASC
WITH
cteRiskStatus
AS
(
SELECT RiskStatusID, RiskStatusName
FROM (VALUES(1, 'Active'),
(2, 'Draft'),
(3, 'Occured'),
(4, 'Escalated'),
(5, 'Closed'),
(6, 'Expired'),
(7, 'Deleted')) AS RiskStatuses(RiskStatusID, RiskStatusName)
)
SELECT * FROM cteRiskStatus
ありがとう