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 的左侧值相同的新记录

我编写了查询以获取值 < 或 > 总和(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

你需要使用 LISTAGG(), smth like SELECT A, LISTAGG(D, ',') WITHIN GROUP (ORDER BY D)。Oracle 中没有 a.A+',' 或 XML PATH ('') 这样的东西...

于 2013-03-11T13:29:55.850 回答