Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择中的位置(使用LISTAGG后)_Sql_Oracle - Fatal编程技术网

Sql 选择中的位置(使用LISTAGG后)

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

我想从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',“SO0004979365”‌​S00004979369','S0000‌​4979375如何在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"