开发者

SQL - Sort Select from table

开发者 https://www.devze.com 2023-04-11 04:34 出处:网络
I have the following row from a table in MSSQL Person | value1 | value开发者_运维技巧2 | value3 | value4

I have the following row from a table in MSSQL

 Person | value1 | value开发者_运维技巧2 | value3 | value4

 John   |   4    |    7   |   1    |   2

I want this row sorted according to the values as shown below.

 Person | value2 | value1 | value4 | value3

 John   |   7    |    4   |   2    |   1

May be I'm asking a stupid question , I want the column names to be sorted according to the values in those column.

I know that this can be achieved using query

SELECT * 
FROM tableName 
ORDER BY value2, value1, value4, value3 DESC

But when I change the any column value, I have to change the query to get the result sorted.

Please help...


-- sample data
declare @t table
(
    person varchar(50),
    value1 int,
    value2 int,
    value3 int,
    value4 int
)

insert into @t select 'John', 4, 7, 1, 2
insert into @t select 'Name1', 14, 7, 1, 16
insert into @t select 'Name2', 24, 8, 1, 2

-- query
select
    person, v1 = [1], v2 = [2], v3 = [3], v4 = [4]
from
(
    select person, rn = row_number() over(partition by person order by a desc), a 
    from @t t1
    unpivot 
    (
        a for b in (value1, value2, value3, value4)
    ) t2
) t1
pivot
(
    max(a) for rn in ([1], [2], [3], [4])
) t2


unless I'm missing something, you should just append 'order by person, value2, value1, value4, value3' at the end of your select statement.


I think you want:

SELECT Person, Value2, Value1, Value4, Valuer
FROM YourTable


try this:

SELECT * FROM tableName ORDER BY value2, value1, value4, value3 DESC
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号