这是表:
select * from ABCD;
| ABCD_ID | ROLE | NAME | PARAM | VALUE |
+============+=======+======+=========+=======+
| 1 | Allow | A1 | Period1 | 1 |
| 1 | Allow | A1 | Period1 | 2 |
| 1 | Allow | A1 | Period1 | 3 |
| 2 | Allow | A2 | Period2 | 11 |
| 2 | Allow | A2 | Period2 | 12 |
| 3 | Allow | A3 | Period3 | 111 |
| 4 | Allow | A4 | XY | 200 |
我想运行select查询将句点作为列,列的值将为“VALUE”
需要输出:
| ABCD_ID | ROLE | NAME | Period |
+==============+=======+======+========+
| 1 | Allow | A1 | 1 |
| 1 | Allow | A1 | 2 |
| 1 | Allow | A1 | 3 |
| 2 | Allow | A2 | 11 |
| 2 | Allow | A2 | 12 |
| 3 | Allow | A3 | 111 |
查询我尝试过:
select ABCD_ID,role,name,param,
(select distinct value
from ABCD
where ABCD_ID=a.ABCD_ID
and param like '%Period%') as "Period"
from ABCD a
where role='Allow'
and param like '%Period%'
获取此错误:ORA-01427:单行子查询返回多行
看起来像一个简单的列别名给我:
select ABCD_ID,
role,
name,
value as "Period"
from ABCD a
where role='Allow'
and param like 'Period%'
我不认为你需要添加'role ='允许'的条件。
从ABCD a中选择ABCD_ID,角色,名称,值作为“期间”,其中参数如'Period%'