我使用如下所示的数据透视表构建了一个结果集:
customer A B C D
Joe. 1 4 0 2
Sue. 2 0 3 9
如何从数据透视表中选择值最大的列名?例如:
Joe B
Sue D
似乎应该很容易但如果我的技能不能完成任务我会被诅咒
答案 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