从数据透视表中选择最大值

时间:2014-08-24 00:14:16

标签: sql pivot-table

我使用如下所示的数据透视表构建了一个结果集:

customer  A  B  C  D
Joe.      1  4  0  2
Sue.      2  0  3  9

如何从数据透视表中选择值最大的列名?例如:

Joe  B
Sue  D

似乎应该很容易但如果我的技能不能完成任务我会被诅咒

2 个答案:

答案 0 :(得分:3)

您可以使用巨大的case声明:

select customer,
       (case when A >= B and A >= C and A >= D then 'A'
             when B >= C and B >= D then 'B'
             when C >= D then 'C'
             else 'D'
        end) as MaxCol
from table t;

但是,在转动数据之前而不是之后,这样做可能要容易得多。

答案 1 :(得分:3)

在SQL Server中,您可以使用UNPIVOT:

摆弄您的数据: http://sqlfiddle.com/#!3/f6601/12/0

select  customer, max(val)
from    (select * from tbl) x
        unpivot
        (val for col in(a, b, c, d)) y
group by customer