SQL2000存储过程里怎么用order by 不同的条件。

2024-12-16 17:29:17
推荐回答(3个)
回答1:

建议 @orderby int 参数设为 varchar类型,即直接传入要排序的字段列表
如果为空就取addtime desc

存储过程可以改为下面的样子
declare @sql varchar(8000)
set @sql='select * from table '
if @orderby=''
set @sql=@sql+' order by price1 asc '
else
set @sql=@sql+' order by '+@orderby

exec (@sql)

回答2:

使用case语句,并且在最后再加一个order by 条件,就是
order by (case @orderby when 1 then price1 else addtime end) desc, 价格 asc
这样应该就可以了,^_^

如果需要按照价格优先的话,就调整一下order by中字段的顺序,这样就可以按照先后设置的字段顺序进行order by,呵呵,希望解决了问题,^_^

回答3:

没有详细的看
但是否可以这样:将SQL语句做一个字符串,在ORDER BY 部份,写段代码,
SQLSTR='xxxx'
IF XXX
BEGIN
ORDERBYSQLSTR=' ORDER BY B DESC'
END
ELSE
BEGIN
ORDERBYSQLSTR=' ORDER BY B DESC'
END

SQLSTR=SQLSTR+ORDERBYSQLSTR

EXEC SQLSTR