SQL语句中。我想通过不同条件来进行不同排序
例如:我的存储过程中有一个@orderType参数。。
当@orderType字段是1时,那么按照时间排序
当@orderType字段是2时,那么按照分数排序不知道有没有非常简洁SQL语句写法我现在想到的就只有是两种写法,但都不精简的:
1:if @orderType =1
begin
...
end
else if @orderType =2
begin
....
end2.合成SQL语句,跟上面的方法基本一样。
例如:我的存储过程中有一个@orderType参数。。
当@orderType字段是1时,那么按照时间排序
当@orderType字段是2时,那么按照分数排序不知道有没有非常简洁SQL语句写法我现在想到的就只有是两种写法,但都不精简的:
1:if @orderType =1
begin
...
end
else if @orderType =2
begin
....
end2.合成SQL语句,跟上面的方法基本一样。
解决方案 »
- System.TranscationScope隐式事务背后的原理是什么?
- 序列化后保存到数据库image类型字段
- 关于数据访问的问题,急!
- 文件或文件夹的属性
- C# 的BindingSource 或者 DataTable 或者 DataSet 有没有正在修改的事件的?或者有没有类似 Delphi 的AfterEdit 事件
- 推荐几本关于使用C#.net语言开发ASP程序的入门书籍。
- 我想使用IList.RemoveAt移除一个一维的string数组的最后一个元素,并重新生成数组,请问该如何书写代码
- POST "multipart/form-data"型的数据后怎么得到服务器返回的数据长度?
- 水晶报表有什么函数能取得水晶报表的页数,注意是页数,不是页码(pagenumber),也就是该水晶报表一共包含多少页?
- 急,用DataSet读写xml文件的问题?
- GridView的CheckBox的选中问题
- 帮忙写个正则表达式。
if @orderType =1
set @sOrder='时间字段'
else
set @sOrder='分数字段'begin
...
set @sql=sql+' order by '+ @sOrder
end
if(@orderType =1)
begin
select @sql += 'order by '..
end
else if(@orderType =2)
begin
select @sql += 'order by '..
endexec @sql
set @i = 0select * from 表 order by case @i when 0 then 排序依据0 when 1 then 排序依据1 end
@orderType直接传入需要排序的字段名称
还可以加一个参数,用于是ASC,还是DESC的
declare @sql varchar(2000)
set @sql="SELECT [你的字段] FROM [你的表]"if @orderType =1
set @order='时间字段'
else
set @order='分数字段'
set @sql=@sql+' order by '+ @ordersp_executesql @sql
case @orderType when 2 ROW_NUMBER() OVER (ORDER BY xxx ASC) id,
end
rownum = case @order
when 1 then ROW_NUMBER() OVER (ORDER BY m.ModelMarketTime desc)
when 2 then ROW_NUMBER() OVER (ORDER BY s.TotalScore desc)
when 3 then ROW_NUMBER() OVER (ORDER BY s.levelid desc)
when 4 then ROW_NUMBER() OVER (ORDER BY s.seriesid desc)
end假如我的 @orderType =1 .但是从排序结果来看。他竟然是按照
when 4 then ROW_NUMBER() OVER (ORDER BY s.seriesid desc)
这个来排序。。但是他的rownum所显示的值是正确的,也就是说,如果你想要排序正常的话。你必须要在外面用
select * from (
sql.....
)t order by rownum
这样才会出现你想要的结果。。奇怪!
if @orderType =1
set @sOrder='时间字段'
else
set @sOrder='分数字段'begin
...
set @sql=sql+' order by '+ @sOrder
end