将3列与布尔值组合成一列

时间:2015-10-13 12:32:37

标签: sql

我偶然发现了一张有三列的桌子

id | isRed | isBlue | is Green
==============================
 1 |   1   |   0    |    0
 2 |   1   |   0    |    0
 3 |   1   |   0    |    0
 4 |   0   |   1    |    0
 5 |   0   |   1    |    0
 6 |   0   |   1    |    0
 7 |   0   |   0    |    1
 8 |   0   |   1    |    0
 9 |   0   |   0    |    1
10 |   0   |   0    |    0

我想创建尽可能简单的查询,将其转换为类似的内容:

id | Color
==============================
 1 | red
 2 | red 
 3 | red  
 4 | blue
 5 | blue
 6 | blue
 7 | green
 8 | blue
 9 | green
10 | 0

这些值不能在两个不同的列中true,我无法更改数据库。我需要它以尽可能少的复杂性将它追加到相当长的查询中。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用selectcase

select id,
       (case when isRed = 1 then 'red'
             when isBlue = 1 then 'blue'
             when isGreen = 1 then 'green'
             else '0'
        end) as color
from t;