如何基于值对多个SQL列进行排序 [英] How to sort multiple SQL columns based on a value
问题描述
我有一个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屋!