我正在尝试根据别名订购选择,但我不知道如何。这是一个例子:
select distinct top 100 id,
col1,
col2,
CASE WHEN @orderFormat = 'this' then col1
WHEN @orderFormat = 'that' then col2
END as orderby
from table
where col1 = like '%'
order by Len(orderby) asc, orderby asc
每当我将别名“orderby”作为参数传递时,它都会被报告为无效列。
我的目标是能够以字母数字方式对变量列进行排序。我知道 'order by Len(orderby) asc, orderby asc 有效,但不能使用别名。
有谁知道解决这个问题的好方法,或者我做错了什么?
谢谢!
编辑:
我已经设法将选择功能简化为:
select top 200 Clip_Name as orderby
from Clips
order by Len(orderby) asc, orderby asc
Clip_Name 被声明为column Clip_Name(nvarchar, not null)
。Microsoft SQL Server 2008 R2 Edition 的错误是Msg 207, Level 16, State 1, Line 1
Invalid column name 'orderby'
.
但是,这有效(没有别名):
select top 200 Clip_Name
from Clips
order by len(FLE_ID) desc, FLE_ID desc