【发布时间】:2012-08-02 14:57:14
【问题描述】:
我正在尝试在 ORDER BY 子句中使用 CASE 语句将行选择到临时表中,但插入时未对记录进行排序。
Declare @orderby varchar(10) , @direction varchar(10)
set @orderby = 'col1'
set @direction = 'desc'
select identity (int) as autoid, *
into #temp
from table
order by case when @direction = 'desc' and @orderby = 'co1' then col1 end desc
declare @startrow int
declare @maxrows int
set @starrow = 19
set @maxrow = 30
set rowcount @maxrows
select * from #temp
where autoid > @startrow
【问题讨论】:
-
尝试以特定顺序插入临时表绝对没有意义 - 当您希望以特定顺序返回行时,无论如何您都需要特定的
ORDER BY.....那么你到底想达到什么目的呢? -
我想将此查询用于分页。我将从我的临时表中进行选择,并且我需要按作为参数传入的列对 autoid 进行排序。我编辑了我的问题以获得我的最终选择语句。
-
您可以从原始数据中执行此操作 - 使用 CTE 和
ROW_NUMBER()- 无需先将这些内容放入单独的临时表中,只需进行分页..... -
我正在使用没有函数 row_number 的 sql server 2000
-
我也在从长查询中进行选择。我只使用表格发布了问题,因为我认为没有必要在此处进行整个查询。基本上我的问题是:有什么方法可以有条件地选择临时表排序???
标签: tsql sql-server-2000 temp case-statement select-into