Sql 选择中的位置(使用LISTAGG后)
我想从oracle数据库中的不同表运行此sql 表A装运线 表B=pckwrk 表C=invdtl 结果Sql 选择中的位置(使用LISTAGG后),sql,oracle,Sql,Oracle,我想从oracle数据库中的不同表运行此sql 表A装运线 表B=pckwrk 表C=invdtl 结果 在sql的这一部分中,其中a.wrkref=W00003DRHO',“W00003DRHP select LISTAGGsubnum,”,“在来自invdtl的wrkrefsubnum的GROUPORDER内,”,其中a.wrkref中的wrkref是结果NULL,而不是S00004979333',“S00004979346',“S00004979358',“S00004979365',“S
在sql的这一部分中,其中a.wrkref=W00003DRHO',“W00003DRHP select LISTAGGsubnum,”,“在来自invdtl的wrkrefsubnum的GROUPORDER内,”,其中a.wrkref中的wrkref是结果NULL,而不是S00004979333',“S00004979346',“S00004979358',“S00004979365',“SO0004979365”S00004979369','S00004979375如何在value a.wrkref的开始和结束处添加单引号?我猜您正在尝试使用in谓词将字符串与子字符串匹配,只有在表达式相等时才能成功。试一试,演示 所以当INSTRa.wrkref,,,1=0时,替换CASE,然后。。。以 结果=正常 其他的 通过wrkrefsubnum在GROUPORDER中选择LISTAGGsubnum 来自invdtl 在a.wrkref中wrkref在哪里 a、 wrkref W00003DRHO','W00003DRHP result=NULL i nwant to add'for and after a.wrkref to get like'W00003DRHO','W00003DRHP'
结束问题是什么?如果value a.werkref=W00003DRHO',W00003DRHP是结果空值,而不是S00004979333',S00004979346',S00004979358',S00004979365',S00004979369',S00004979375,请扩展您的问题。您如何无法从oracle数据库中的不同表运行此sql?在这部分sql中,a.wrkref=W00003DRHO',“W00003DRHP select listagsubnum,,“GROUPORDER内,wrkrefsubnum from invdtl,其中a.wrkref中的wrkref为结果NULL,而不是S00004979333',“S00004979346”,'S00004979358'、'S00004979365'、'S00004979369'、'S00004979375如何在ValueA.wrkref的开头和结尾添加单引号
ORDERQTY_SHIP_ID SHIP_LINE_ID
0 SLM4298700
1 SLM4286868
12 SLM4162661
19 SLM4162693
SHIP_LINE_ID WRKREF
SLM4298700
SLM4286868 W00003HAEM
SLM4162661 W00003DRGM
SLM4162693 W00003DRHO
SLM4162693 W00003DRHP
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
select 1 from dual
where ''''||'W00003DRHO'',''W00003DRHP'||'''' like '%'''||'W00003DRHO'||'''%'
(select LISTAGG(subnum, ''',''') WITHIN GROUP(ORDER BY wrkref) subnum
from invdtl
where ''''+a.wrkref+'''' like '%'''||wrkref||'''%' )
(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"