plsql按表值

时间:2015-10-02 14:54:32

标签: sql oracle plsql

我的表T只有一行值,名称是列名,而不是'不是'或者'注册'是值

Jack      |    Mary  |   Tom    |  Peter |

enrolled  |   not    |enrolled  | not   |

我有什么方法可以返回列名称,其值是'不是'

样本结果集:

| Mary | Peter |

2 个答案:

答案 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;