我想在ORACLE數據庫運行來自不同表的這個SQL選擇其中在(使用LISTAGG之後)
TABEL A 「SHIPMENT_LINE」
ORDERQTY_SHIP_ID SHIP_LINE_ID
0 SLM4298700
1 SLM4286868
12 SLM4162661
19 SLM4162693
TABEL B = 「pckwrk」
SHIP_LINE_ID WRKREF
SLM4298700
SLM4286868 W00003HAEM
SLM4162661 W00003DRGM
SLM4162693 W00003DRHO
SLM4162693 W00003DRHP
TABEL C = 「invdtl」
WRKREF SUBNUM
W00003DRHP S00004979375
W00003DRHP S00004979358
W00003DRHP S00004979365
W00003HAEM CTN2379829
W00003DRGM S00004980093
W00003DRHO S00004830248
W00003DRHP S00004979369
W00003DRHP S00004979346
W00003DRHP S00004979333
select a.ORDERQTY_SHIP_ID,a.SHIP_LINE_ID,a.wrkref,
(CASE WHEN ORDERQTY_SHIP_ID>0 THEN
(CASE WHEN INSTR(a.wrkref, ',', 1)=0 then
(select LISTAGG(subnum, ''',''') WITHIN GROUP(ORDER BY wrkref) subnum
from invdtl
where wrkref in (a.wrkref)) --a.wrkref = "W00003DRGM"
else
(select LISTAGG(subnum, ''',''') WITHIN GROUP(ORDER BY wrkref)subnum
from invdtl
where wrkref in (a.wrkref))
"a.wrkref "W00003DRHO','W00003DRHP""
end)
else NULL
end)SUBNUM
from(select a.ORDERQTY_SHIP_ID,a.SHIP_LINE_ID,
(SELECT LISTAGG(wrkref, ''',''') WITHIN GROUP(ORDER BY wrkref)wrkref
FROM pckwrk
WHERE SHIP_LINE_ID =a.SHIP_LINE_ID AND PRTNUM NOT LIKE'KITPART'
GROUP BY SHIP_LINE_ID) as wrkref
from (select a.ORDERQTY_SHIP_ID,a.SHIP_LINE_ID
from SHIPMENT_LINE a)a)a
結果
ORDERQTY_SHIP_ID SHIP_LINE_ID WRKREF SUBNUM
0 SLM4298700 NULL NULL
1 SLM4286868 W00003HAEM CTN2379829
12 SLM4162661 W00003DRGM S00004980093
19 SLM4162693 W00003DRHO','W00003DRHP NULL
論個SQL where a.wrkref=W00003DRHO','W00003DRHP (select LISTAGG(subnum, ''',''') WITHIN GROUP(ORDER BY wrkref)subnum from invdtl where wrkref in (a.wrkref))
是導致NULL
,而不是S00004979333','S00004979346','S00004979358','S00004979365','S00004979369','S00004979375
如何添加的Singel報價在開始和valeue a.wrkref
有什麼問題嗎? –
if valeue a.werkref = W00003DRHO','W00003DRHP是結果NUll而不是S00004979333','S00004979346','S00004979358','S00004979365','S00004979369','S00004979375 – geert805
請擴大你的問題。如何不能從oracle數據庫的不同表中運行這個sql? – toonice