我有一个输入表格,如下所示 -
ID Name q1 q2 q3 q4
1 a 2621 2036 1890 2300
2 b 18000 13000 14000 15000
3 c 100 200 300 400
我想要每行中列(q1、q2、q3和q4
)数据的排名。例如,如果我考虑上述输入的最后一行,则q4
列包含400
值,比其他列都高,因此q4
列的排名将是1
,q3
的排名将是2
,q2
的排名将是3
,q1
的排名将是4
。我想要的输出如下 -
id name q1 q2 q3 q4
1 a 1 3 4 2
2 b 1 4 3 2
3 c 4 3 2 1
输入表中有超过10万条记录。
我已经为输入表创建了一个小的 SQL 脚本,即:
declare @temp table (ID int, Name varchar(10), q1 int, q2 int, q3 int, q4 int)
insert into @temp
select 1, 'a', 2621, 2036, 1890, 2300
union all
select 2, 'b', 18000, 13000, 14000, 15000
union all
select 3, 'c', 100, 200, 300, 400
select * from @temp
请帮我找到解决这个问题的高效方法。
请帮我找到解决这个问题的高效方法。