我有一个查询,其中返回一个记录状态列。记录状态列有几个值,例如:“事件”、“已删除”等...

我需要按“事件”,然后“已删除”,然后等等对结果进行排序...

我目前正在创建 CTE 以带来每组记录,然后是 UNION ALL。有没有更好的动态方式来完成查询?

谢谢,

最佳答案

如需更多状态值,您可以执行以下操作:

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;

关于sql - TSQL Order By - 硬编码值列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14702927/

10-12 07:06