0
 A   B C  D    
12426 4 1 KT1217V
12426 4 1 KT1218V
12428 3 1 KT1217V
12428 3 1 KT1218V
12430 3 1 KT1217V
12430 3 1 KT1218V
12431 3 1 KT1217V
12431 3 1 KT1218V
12434 3 1 KT1217V
12434 3 1 KT1218V
12439 8 1 KT1217V
12439 8 1 KT1218V
12440 1 1 KT1217V
12440 1 1 KT1218V
12442 8 1 KT1217V
12442 8 1 KT1218V
12443 8 1 KT1217V
12443 8 1 KT1218V

私はこのような結果を探しています:

KT1217V      12426,12428 ..... 
KT1218       12426,12428,12431
KT1218       12434,12439 

列bの値が合計<5になるまで、合計が> 5を超える場合は、c=1の場合に残っている値と同じの新しいレコードを表示します。

値<または>sum(列B)を取得するクエリを作成しましたが、列Dの残りの値列Aで同じの新しいレコードを表示できません

select D,
(select a.A+',' from table1 a where a.D = b.D for XML PATH ('') )
from table1 b
WHERE c = 1
group by D
HAVING SUM(B)<5
ORDER BY D
4

1 に答える 1

0

SELECT A、LISTAGG(D、'、') WITHIN GROUP (ORDER BY D) のように、LISTAGG() を使用する必要があります。Oracle には、a.A+',' または XML PATH ('') のようなものはありません...

于 2013-03-11T13:29:55.850 に答える