我正在尝试从按预定义的5个字母序列排序的表中获取输出。 即L> C> E> O>一个 通过使用顺序我不能得到所需的结果。我正在使用SQL server db。
如果我可以在查询中定义序列,请任何人建议我吗? 所以我得到的结果是L> C> E> O>甲
先谢谢。
答案 0 :(得分:4)
select * from your_table
order by case when some_column = 'L' then 1
when some_column = 'C' then 2
when some_column = 'E' then 3
when some_column = 'O' then 4
when some_column = 'A' then 5
end desc
答案 1 :(得分:0)
如果要对两个或多个查询使用这些排序条件,则可以为此创建一个表:
CREATE TABLE dbo.CustomSort (
Value VARCHAR(10) PRIMARY KEY,
SortOrder INT NOT NULL
);
GO
INSERT INTO dbo.CustomSort (Value, SortOrder) VALUES ('L', 1);
INSERT INTO dbo.CustomSort (Value, SortOrder) VALUES ('C', 2);
INSERT INTO dbo.CustomSort (Value, SortOrder) VALUES ('E', 3);
INSERT INTO dbo.CustomSort (Value, SortOrder) VALUES ('O', 4);
INSERT INTO dbo.CustomSort (Value, SortOrder) VALUES ('A', 5);
GO
然后您可以使用x
表加入源表(在此示例中为dbo.CustomSort
),因此:
SELECT x.Col1
FROM
(
SELECT 'E' UNION ALL
SELECT 'C' UNION ALL
SELECT 'O'
) x(Col1) INNER JOIN dbo.CustomSort cs ON x.Col1 = cs.Value
ORDER BY cs.SortOrder
/*
Col1
----
C
E
O
*/
我更新了dbo.CustomSort
表,然后所有查询都将使用新的排序条件。