如何在多列中获取具有最大值的列名称

时间:2015-10-22 23:43:11

标签: sql sas

我有以下数据,我在SAS中使用proc sql。

ID  Col_1 Col_2 Col_3
1   100   110   120

我想要

ID Max_Col
1  Col_3

3 个答案:

答案 0 :(得分:1)

也许一个案例会完成你的任务

select ID, case when Col_1 >= Col_2 then 'Col_1'
                when Col_2 <= Col_3 then 'Col_3'
                else 'Col_2'
                end as MAX_Col
      from [TABLENAME];

答案 1 :(得分:1)

这不是SQL解决方案,因为问题更适合SAS数据步骤。 VNAME()在SAS SQL中也不起作用。

假设您使用的是SAS,则可以使用VNAMEMAXWHICHN函数的组合。如果你有重复的最大值,你会想要发生什么?

 data want;
 set have;

 array col(3) col_1-col_3;

 index_of_max=whichn(max(of col(*)), of col(*));
 variable_name=vname(col(index_of_max));

 run;

答案 2 :(得分:0)

您需要使用LARGEST功能:

ID, LARGEST(Col_1, Col_2, Col_3)
相关问题