我的表T只有一行值,名称是列名,而不是'不是'或者'注册'是值
Jack | Mary | Tom | Peter |
enrolled | not |enrolled | not |
我有什么方法可以返回列名称,其值是'不是'
样本结果集:
| Mary | Peter |
答案 0 :(得分:2)
如果仍有时间重新设计表格+数据,请考虑将其更改为:
name | is_enrolled
---- -----------
Jack 1
Mary 0
Tom 1
Peter 0
这样,您可以使用更简单的SQL来执行您想要的操作:
select name from table_name where is_enrolled = 0
答案 1 :(得分:0)
您的数据格式似乎非常糟糕。 SQL查询返回固定数量的列。所以,你不能通过返回值来做你想做的事。
但是,您可以使用列名创建一个字符串:
select ((case when Jack = 'not' then 'Jack ' else '' end) ||
(case when Mary = 'not' then 'Mary ' else '' end) ||
(case when Tom = 'not' then 'Tom ' else '' end) ||
(case when Peter = 'not' then 'Peter ' else '' end)
) TheNots
from t;