我想在查询中实现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
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
用IF或CASE搞.
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)
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)
好像report中没有法使用declare
exec