我需要从case查询中获取结果的列名,有办法吗?
SELECT
(CASE
WHEN a >= b AND a >= c AND a >= d AND a >= e THEN a
WHEN b >= c AND b >= d AND b >= e THEN b
WHEN c >= d AND c >= e THEN c
WHEN d >= e THEN d
ELSE e
END) as ans
FROM response
where qno='1'
上面的代码给出a,b,c,d,e的值,但我想要a,b,c,d,e的结果作为结果
答案 0 :(得分:3)
您需要另一个CASE
表达式。
SELECT
CASE
WHEN a >= b AND a >= c AND a >= d AND a >= e THEN a
WHEN b >= c AND b >= d AND b >= e THEN b
WHEN c >= d AND c >= e THEN c
WHEN d >= e THEN d
ELSE e
END as ans,
CASE
WHEN a >= b AND a >= c AND a >= d AND a >= e THEN 'a'
WHEN b >= c AND b >= d AND b >= e THEN 'b'
WHEN c >= d AND c >= e THEN 'c'
WHEN d >= e THEN 'd'
ELSE 'e'
END as column
FROM response
where qno='1'
您还可以使用GREATEST()
函数来简化此操作。
SELECT
GREATEST(a, b, c, d, e) AS ans,
CASE GREATEST(a, b, c, d, e)
WHEN a THEN 'a'
WHEN b THEN 'b'
WHEN c THEN 'c'
WHEN d THEN 'd'
ELSE 'e'
END AS column
FROM response
WHERE qno = '1'