Sql 根据行中哪个列的值较大进行分类

Sql 根据行中哪个列的值较大进行分类,sql,sql-server,Sql,Sql Server,我有一个如下所示的表格: id|value_1 |value_2 |value_3 |value_4 1 |0.2 |0.3 |0.1 | 0.4 2 |0.6 |0.1 |0.1 | 0.2 3 |0.1 |0.2 |0.3 | 0.4 我想根据列中的最高值(值_1、值_2、值_3、值_4)对每一行进行分类 预期产出: ID|Category 1|4 2|1 3|4 有人可以建议一种使用SQL查询实现此目的的方法

我有一个如下所示的表格:

id|value_1 |value_2 |value_3 |value_4
1 |0.2     |0.3     |0.1     | 0.4
2 |0.6     |0.1     |0.1     | 0.2
3 |0.1     |0.2     |0.3     | 0.4
我想根据列中的最高值(值_1、值_2、值_3、值_4)对每一行进行分类

预期产出:

ID|Category
 1|4
 2|1
 3|4

有人可以建议一种使用SQL查询实现此目的的方法吗?

您可以使用
apply
实现此目的:

select t.*, v.category
from t cross apply
     (select top (1) v.*
      from (values (value_1, 'value_1'),
                   (value_2, 'value_2'),
                   (value_3, 'value_3'),
                   (value_4, 'value_4')
           ) v(val, category)
      order by val desc
     ) v;