Есть ли способ получить имя столбца результата запроса - PullRequest
0 голосов
/ 04 апреля 2019

Мне нужно получить имя столбца результата из запроса кейса. Есть ли способ сделать это?

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

1 Ответ

3 голосов
/ 04 апреля 2019

Вам нужно другое 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...