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