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