LISTAGGを使用して最初の3行を1つの列にグループ化するSQLクエリで、自分の列のいずれかを制限しようとしています。OracleでのLISTAGG結果の制限
例えば:
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
が、それは次のように返している...私はしかしLISTAGGを使用してデータを連結することができるよ
Name Recent_Orders
-----------------------------
Joe Joe_Order1, Joe_Order2, Joe_Order3
Mark Mark_Order1, Mark_Order2, Mark_Order3
、私は制限するかどうかは全くわからないんだけど結果は最初の3レコードになります。
これはLISTAGGで可能ですか?どんな助けでも大歓迎です。 LISTAGG()
はNULL
値を無視し、デフォルトでは
SELECT NAME,
LISTAGG(CASE WHEN seqnum <= 3 THEN Orders END, ', ') WITHIN GROUP (ORDER BY Orders) as Recent_Orders
FROM (SELECT o.*, ROW_NUMBER() OVER (PARTITION BY NAME ORDER BY ?? DESC) as seqnum
FROM Order_table o
) o
GROUP BY NAME;
、これは何をしたいん:ありがとう