想要实现这么个效果,就是Order By 根据条件判断升序还是降序。下面是错误的代码:
DECLARE @i INT
SET @i = 1
SELECT * FROM s_BO_History
ORDER BY Id
CASE WHEN @i = 1 THEN
DESC
ELSE
ASC
END
SQL 有几种这样的实现方法? 拼SQL 然后EXEC 是可以的。但是我想实现类似上面代码的结构,可行么?
------解决方案--------------------
方法2,
declare @i int
set @i=1
declare @tsql varchar(6000)
select @tsql='SELECT * FROM s_BO_History ORDER BY Id '
+CASE WHEN @i=1 then 'DESC' else 'ASC' END
exec(@tsql)
------解决方案--------------------
DECLARE @i INT;
SET @i=1;
;WITH s_BO_History AS
(
SELECT * FROM History
)
SELECT *
into #t
FROM s_BO_History
if @i=1
begin
select * from #t order by Id DESC
end
else
begin
select * from #t order by Id ASC
end