【发布时间】:2017-05-30 13:56:37
【问题描述】:
我试图限制我的 SQL 查询中的一个列,该查询使用 LISTAGG 仅将前 3 行分组到一个列中。
例如:
Table
-----
Name Orders
---------------
Joe Joe_Order1
Joe Joe_Order2
Joe Joe_Order3
Joe Joe_Order4
Joe Joe_Order5
Joe Joe_Order6
Mark Mark_Order1
Mark Mark_Order2
Mark Mark_Order3
Mark Mark_Order4
让它返回以下...
Name Recent_Orders
-----------------------------
Joe Joe_Order1, Joe_Order2, Joe_Order3
Mark Mark_Order1, Mark_Order2, Mark_Order3
我可以使用 listagg 连接数据,但是我不完全确定如何将结果限制为前 3 条记录。
SELECT NAME, LISTAGG(Orders, ', ') within group(order by Orders)
as Recent_Orders
FROM
Order_table
GROUP BY
NAME
LISTAGG 可以做到这一点吗?任何帮助将不胜感激。谢谢
【问题讨论】: