我有一个包含出行方式 bool 值的表格,如下所示:
SELECT * FROM survey;
+----+-------+-------+-------+-------+
| id | bike | car | bus | metro |
+----+-------+-------+-------+-------+
| 49 | false | false | true | false |
| 51 | false | true | false | false |
| 52 | false | false | false | true |
| 53 | false | true | false | false |
+----+-------+-------+-------+-------+
然后我只想选择值为 true
的模式,因此最终结果是:
+----+-------+
| id | mode |
+----+-------+
| 49 | bus |
| 51 | car |
| 52 | metro |
| 53 | car |
+----+-------+
请问我如何实现?
最佳答案
您可以使用 case
表达式:
select
id,
case
when bike = true then 'bike'
when car = true then 'car'
when bus = true then 'bus'
when metro = true then 'metro'
end mode
from survey
假设对于每一行,只有一列为真。如果不是,则只返回第一个匹配列的值。
关于sql - Postgres : SELECT column name based on Boolean value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58591079/