SELECT Code, Value FROM dbo.Sample
输出:
Code Value
Alpha Pig
Beta Horse
Charlie Dog
Delta Cat
Echo Fish
我想通过指定代码列表来添加序列列,并根据 IN 子句中指定的顺序对列表进行排序。
SELECT Code, Value FROM dbo.Sample
WHERE Code in ('Beta', 'Echo', 'Alpha')
如果这样更容易,我可以在顶部声明一个变量来指定代码。
关键是我想根据我指定的顺序添加行号。
输出:
Row Code Value
1 Beta Horse
2 Echo Fish
3 Alpha Pig
编辑:之后我意识到我的代码都是固定长度的,这对它的完成方式有很大的影响。我将下面的答案标记为正确,但我的解决方案是使用逗号分隔的值字符串:
DECLARE @CodeList TABLE (Seq int, Code nchar(3))
DECLARE @CodeSequence varchar(255)
DECLARE @ThisCode char(3)
DECLARE @Codes int
SET @Codes = 0
-- string of comma-separated codes
SET @CodeSequence = 'ZZZ,ABC,FGH,YYY,BBB,CCC'
----loop through and create index and populate @CodeList
WHILE @Codes*4 < LEN(@CodeSequence)
BEGIN
SET @ThisCode = SUBSTRING(@CodeSequence,@Codes*4+1,3)
SET @Codes = @Codes + 1
INSERT @CodeList (Seq, Code) VALUES (@Codes, @ThisCode)
END
SELECT Seq, Code from @CodeList