Select a column based on the value of another column

Viewed 55

Is there a way to do this more efficiently?

select 
claim_id,
case when flex_field1_label = 'Member ID' then flex_field1_value
when flex_field2_label = 'Member ID' then flex_field2_value
when flex_field3_label = 'Member ID' then flex_field3_value
when flex_field4_label = 'Member ID' then flex_field4_value
when flex_field5_label = 'Member ID' then flex_field5_value end as "Member ID"
from claim_flexfields

Dbeaver

1 Answers

Shorter SQL would be:

    SELECT
        claim_id,
        CASE WHEN 'Member ID' IN (flex_field1_label, flex_field2_label,
        flex_field3_label, flex_field4_label, flex_field5_label) THEN 'Member ID'
        END AS "Member ID"
    FROM
        claim_flexfields;
Related