如何基于值对多个SQL列进行排序 [英] How to sort multiple SQL columns based on a value

查看:69
本文介绍了如何基于值对多个SQL列进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个sql表,我需要在其中选择基于值排序的数据。例如,



如果排序值为1,那么我需要按column1,column2和column3排序。



如果排序值为2,那么我需要按column2,column1和column3排序。



如果排序值为3,那么我需要按column3,column1和column2排序。



有谁能告诉我如何在sql中实现这一点而不使用if else如下:



如果@SortOrder = 1

那么

从表格顺序中选择* c1,c2,c3

结束

如果@SortOrder = 2

那么

从表格顺序中选择c2,c1,c3

结束

如果@SortOrder = 3

那么

从表格顺序中选择* c3,c1,c2

结束



我的尝试:



我试过

从表中选择*

按顺序排列@SortOrder = 1然后c1,c2,c3

当@SortOrder = 2然后是c2, c1,c3

当@SortOrder = 3然后c3,c1,c2

结束

I have an sql table, in which I need to select the data, that is sorted based on a value. For example,

If the sort value is 1, then I need to sort by column1, column2 and then column3.

If the sort value is 2, then I need to sort by column2, column1 and then column3.

If the sort value is 3, then I need to sort by column3, column1 and then column2.

Can anyone tell me how can I achieve this in sql without using if else as below:

IF @SortOrder = 1
THEN
select * from table order by c1,c2,c3
end
IF @SortOrder = 2
THEN
select * from table order by c2,c1,c3
end
IF @SortOrder = 3
THEN
select * from table order by c3,c1,c2
end

What I have tried:

I have tried
select * from table
order by case when @SortOrder = 1 then c1,c2,c3
when @SortOrder = 2 then c2,c1,c3
when @SortOrder = 3 then c3,c1,c2
end

推荐答案

试试这个



Try this

declare @SortOrder int; declare @sql varchar(500);
declare @orderby varchar(50)
set @SortOrder  =3
 set @orderby = case @SortOrder when 1 then 'c1,c2,c3' when 2 then 'c2,c1,c3' when 3 then 'c3,c2,c1' end
 set @sql = 'select * from table1 order by '  + @orderby
 exec (@sql)


这篇关于如何基于值对多个SQL列进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆