我很难解释这一点,所以如果有人可以调整标题或问题,那么请做。
我有一个简单的SQL查询正在运行
SELECT orders.customer_no, orders.order_no FROM orders WHERE orders.creation = '01-JAN-14';结果是
customer_no order_no
----------- ----------
0 8051729
2 2809137
2 3794827
3 1934678
3 9237192
6 3462890
6 3131378
6 6267190
6 2864952
6 1325645但我想要的是
customer_no order_no
----------- ----------
0 8051729
2 2809137 3794827
3 1934678 9237192
6 3462890 3131378 6267190 2864952 1325645在SQL中可以直接这样做吗?
编辑:使用Oracle8i企业版发行版8.1.7.4.0 -生产。
发布于 2014-06-06 08:36:15
我相信你想:
select orders.customer_no, listagg(orders.order_no, ' ') within group (order by orders.order_no) orders.order_no
from orders
WHERE orders.creation = '01-JAN-14'
group by orders.customer_no;在MySQL中,您可能需要GROUP_CONCAT函数,它在Oracle中大致是LISTAGG,如下所示:
发布于 2014-06-06 10:11:11
基于Oracle: Way to aggregate concatenate an ungrouped column in grouped results,您可以尝试这样的方法:
WITH j
AS (SELECT customer_no, order_no
FROM orders
WHERE creation = '01-JAN-14')
SELECT RTRIM (
EXTRACT (SYS_XMLAGG (XMLELEMENT ("X", order_no || ' ')), '/ROWSET/X/text()').getstringval (),
', ')
FROM j
GROUP BY customer_no;https://stackoverflow.com/questions/24077373
复制相似问题