我想在查询中实现order by asc还有desc 还有前几个
number 是可变的,根据用户的输入,升序和降序也是用户选择的
use Northwind
declare @number int
set @number='5' 
select top 5 * from Employees order by EmployeeID asc
select * from Employees order by EmployeeID asc
select * from Employees order by EmployeeID desc
想把上面的写成一句sql,传递两个参数,一个是number,一个是type,type决定用哪句sql
type=’1‘  select  * from Employees order by EmployeeID asc并且根据@number的值 取前几
type=‘2’ select * from Employees order by EmployeeID desc 并且根据@number的值 取前几
type=‘3’select * from Employees order by EmployeeID asc
type=‘4’ select * from Employees order by EmployeeID desc

解决方案 »

  1.   

    一句搞不定.
    用IF或CASE搞.
      

  2.   

    declare @ordertype varchar(10)
    declare @count varchar(10)set @ordertype='desc '
    set @count=4declare @sql varchar(8000)
    set @sql= 'select top '+@count+' * from  Employees order by  EmployeeID '+@ordertypeexec(@sql)
      

  3.   

    declare @sql varchar(200),@number int,@type varchar(10)
    select  @type='1',@number=5
    set @sql=
    case when @type='1' or @type='3' then 'select top '+ltrim(@number)+' * from Employees order by EmployeeID asc'
         when @type='2' or @type='4' then 'select top '+ltrim(@number)+' * from Employees order by EmployeeID desc'
    end
    exec(@sql)
      

  4.   

    因为我是在报表中
    好像report中没有法使用declare
    exec