I am having some difficulty with using a case statement in the Order By clause and am hoping for some guidance on what I am not taking into account.(SSMS 2017, SS2008 R2 SP3)
Given that I can run:
Select Myname = [name],
OjectId = [object_id]
From sys.tables
Order By [name],[object_id]
and can run:
Select Myname = [name],
OjectId = [object_id]
From sys.tables
Order By Myname,OjectId
as well as:
Declare @Sort as Varchar(25)
Set @Sort = 'Name'
Select Myname = [name],
OjectId = [object_id]
From sys.tables
Order By case @Sort
When 'Name'
Then [name]
End
I am having trouble understanding why this fails:
Declare @Sort as Varchar(25)
Set @Sort = 'Name'
Select Myname = [name],
OjectId = [object_id]
From sys.tables
Order By case @Sort
When 'Name'
Then Myname
End
as well as this:
Declare @Sort as Varchar(25)
Set @Sort = 'NameObj'
Select Myname = [name],
OjectId = [object_id]
From sys.tables
Order By case @Sort
When 'NameObj' then [name],[object_id]
End
Any input that anyone can share would be helpful.