Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用模式将多个结果选择到一行中_Sql_Oracle_Oracle11g_Pivot - Fatal编程技术网

Sql 如何使用模式将多个结果选择到一行中

Sql 如何使用模式将多个结果选择到一行中,sql,oracle,oracle11g,pivot,Sql,Oracle,Oracle11g,Pivot,我读过,但我不明白 我的桌子: ----------------- | P_TABLE | ----------------- | P_ID | P_DATA | | 12 | AAAA | | 15 | BBBB | | 19 | CCCC | ----------------- 通常查询是从p_表p中选择p.p_ID,结果是 -------- | P_ID | -------- | 12 | | 15 | | 19 | -------- 但

我读过,但我不明白

我的桌子:

-----------------
|    P_TABLE    |
-----------------
| P_ID | P_DATA |
|  12  |  AAAA  |
|  15  |  BBBB  |
|  19  |  CCCC  |
-----------------
通常查询是从p_表p中选择p.p_ID,结果是

--------
| P_ID |
--------
|  12  |
|  15  |
|  19  |
--------
但是,我需要这样的结果

---------------
|    P_ID     |
---------------
|  (12,15,19) |
怎么做

我认为这个解决方案可以通过,但我不知道如何使用

谢谢你的帮助。

我想你可以用


可以通过SQL执行吗?或者需要C来帮助了解模式?结果中是否需要这些括号?另外,您需要为一列或多列执行此操作吗?如果是后者,你可以将PIVOT与公认的答案结合起来;LISTAGG与MAX或SUM一样,是一个聚合函数,可以很好地与PIVOT配合使用。@mathguy没问题,我使用了| |,即选择| | listaggp_id','| |,谢谢你的关注@mathguy,但是,我仍然对PIVOT函数感兴趣,如果你发布如何,我认为它应该对另一个有帮助。所以,这是一个更有意义的问题,你没有回答。您或将来可能需要为多个列执行此操作吗?太棒了,非常感谢您。@Toondardevil-或者,如果p_id应按其他内容排序,而不仅仅是按其自身的递增顺序排序,例如,如果必须按p_数据排序,或者可能按您未显示的时间戳列排序,也可以执行此操作,简单-只需在小组内更改您的订单即可。
select listagg(p_id,',') within group (order by p_id) p_id from p_table;