select letter from (select 'a' letter unionselect 'b' letter unionselect 'c' letter union select 'd' letter union select 'e' letter)source order by (case letter when 'd' then 1 when 'c' then 2 when 'b' then 3 when 'a' then 4 when 'e' then 5 end)
DECLARE @TEST1 TABLE (letter varchar(1))INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('b')INSERT INTO @TEST1(letter) VALUES('c')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('e')
select letter from @test1 order by (case letter when 'd' then 1 when 'c' then 2 when 'b' then 3 when 'a' then 4 when 'e' then 5 end)
DECLARE @TEST1 TABLE (letter varchar(1))INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('b')INSERT INTO @TEST1(letter) VALUES('c')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('e')declare @SortString varchar(10) = 'd;c;b;a;e' select * from @Test1 tjoin( select ItemNumber, Item from dbo.DelimitedSplit8K(@SortString, ';')) x on t.letter = x.Itemorder by x.ItemNumber
select * from sys.objectsOUTER apply master.dbo.delimitedsplit8k('d;c;b;a;e',';') myfnORDER BY CASE WHEN LEFT(name,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber
select * from @Test1 tOUTER apply dbo.delimitedsplit8k('d;c;b;a;e',';') myfnORDER BY CASE WHEN LEFT(letter,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber
select * from @Test1 tOUTER apply dbo.delimitedsplit8k('d;c;b;a;e',';') myfnwhere t.letter = myfn.ItemORDER BY CASE WHEN LEFT(letter,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber
DECLARE @TEST1 TABLE (letter varchar(1))INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('b')INSERT INTO @TEST1(letter) VALUES('c')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('d')
select letter from @Test1 tOUTER apply dbo.delimitedsplit8k('d;c;b;a;e',';') myfnwhere t.letter = myfn.ItemORDER BY CASE WHEN LEFT(letter,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber
Select Distinct Letter from (select letter from @Test1 tOUTER apply dbo.delimitedsplit8k('d;c;b;a;e',';') myfnwhere t.letter = myfn.ItemORDER BY CASE WHEN LEFT(letter,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber) xx
Msg 1033, Level 15, State 1, Line 16The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP or FOR XML is also specified.
DECLARE @TEST1 TABLE (letter varchar(1))INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('b')INSERT INTO @TEST1(letter) VALUES('c')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('a')INSERT INTO @TEST1(letter) VALUES('d')INSERT INTO @TEST1(letter) VALUES('d');WITH CTE AS (SELECT DISTINCT letter FROM @Test1)select letter from CTE tOUTER apply dbo.delimitedsplit8k('d;c;b;a;e',';') myfnwhere t.letter = myfn.ItemORDER BY CASE WHEN LEFT(letter,1) = myfn.Item THEN 1 ELSE 2 END,myfn.ItemNumber