Limit LISTAGG results in Oracle

Viewed 5072

I'm trying to limit one of my columns in my SQL query that uses LISTAGG to only group the first 3 rows into a single column.

For instance:

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

Have it return the following...

Name   Recent_Orders
-----------------------------
Joe    Joe_Order1, Joe_Order2, Joe_Order3
Mark   Mark_Order1, Mark_Order2, Mark_Order3

I'm able to concatenate the data using listagg however, I'm not entirely sure how to limit the results to the first 3 records.

SELECT NAME, LISTAGG(Orders, ', ') within group(order by Orders)
  as Recent_Orders
FROM
  Order_table
GROUP BY
  NAME

Is this possible with LISTAGG? Any help would be greatly appreciated. Thanks

2 Answers
Related