Sql 在oracle查询中将行值选择为列
这是表格:Sql 在oracle查询中将行值选择为列,sql,oracle,Sql,Oracle,这是表格: select * from ABCD; | ABCD_ID | ROLE | NAME | PARAM | VALUE | +============+=======+======+=========+=======+ | 1 | Allow | A1 | Period1 | 1 | | 1 | Allow | A1 | Period1 | 2 | | 1 | Allow | A1 | P
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='Allow'条件 选择ABCD\u ID, 角色 名称 作为期间的值 来自ABCD a
其中类似于“Period%”的参数在我看来,您的预期输出与起始表几乎相同。你们能解释一下你们想在这里做什么吗?我在ABCD表中有一列param,它的不同值是Period1、Period2、Period3和XY。我想要一个包含所有句点的句点,而不是XY作为一列,它将为我提供不同的ABCD_ID的值。我希望我能够正确地解释它。不,我仍然不清楚。也许可以编辑你的问题,并使用样本数据来揭示你在这里尝试做的事情的不同质量。对不起。。。我必须重新措辞这个问题对不起…我必须重新措辞这个问题