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的值。我希望我能够正确地解释它。不,我仍然不清楚。也许可以编辑你的问题,并使用样本数据来揭示你在这里尝试做的事情的不同质量。对不起。。。我必须重新措辞这个问题对不起…我必须重新措辞这个问题