Oracle SQL - 使用合并函数
Oracle SQL - using the coalesce function
我真的无法理解 coalesce 函数...或者这是否是获得我想要达到的结果的最佳方式。
我在以下脚本中有三个日期 (iv.dated、iv1.dated、dh.actshpdate)。当我 运行 以下脚本时,日期在单独的列中(如预期的那样);
select unique li.catnr, li.av_part_no, li.artist||' / '||li.title description, li.cust_catnr pallet_ref,
trunc(iv.dated), trunc(iv1.dated), trunc(dh.actshpdate)
from leos_item li
left join invtran_view_oes iv
on li.av_part_no = iv.part_no
and (iv.transaction = 'NREC' and iv.location_no = ' RETURNS W')
left join invtran_view_oes iv1
on li.av_part_no = iv1.part_no
and (iv1.transaction = 'CORR+' and iv1.remark like 'STOCK FROM SP PALLET%')
left join oes_delsegview od
on od.catnr = li.catnr
and od.prodtyp = li.prodtyp
and od.packtyp = li.packtyp
left join oes_dpos dp
on od.ordnr = dp.ordnr
and od.posnr = dp.posnr
and od.segnr = dp.segnr
left join oes_dhead dh
on dp.dheadnr = dh.dheadnr
where li.cunr = '816900'
and substr(li.catnr,1,5) in ('RGMCD','RGJCD')
and li.item_type = 'FP'
and li.catnr = 'RGJCD221'
我想要实现的是所有日期按日期顺序排列的一列。
我尝试用 ...
替换我的日期
trunc(coalesce(iv.dated, iv1.dated, dh.actshpdate)) transaction_date
...但是,我丢失了一些日期;
我怎样才能达到以下结果?
您可以按以下方式使用 UNION -
WITH DATA AS(
<your query goes here>
)
SELECT A, b, c, d, e FROM DATA
UNION
SELECT A,b,c,d,f FROM DATA
UNION
SELECT A,b,c,d,g FROM DATA
其中 a、b、c、d、e、f、g 是原始查询中 select 列表的列别名。您可以在 UNION 查询中提供自己的列别名。
我真的无法理解 coalesce 函数...或者这是否是获得我想要达到的结果的最佳方式。
我在以下脚本中有三个日期 (iv.dated、iv1.dated、dh.actshpdate)。当我 运行 以下脚本时,日期在单独的列中(如预期的那样);
select unique li.catnr, li.av_part_no, li.artist||' / '||li.title description, li.cust_catnr pallet_ref,
trunc(iv.dated), trunc(iv1.dated), trunc(dh.actshpdate)
from leos_item li
left join invtran_view_oes iv
on li.av_part_no = iv.part_no
and (iv.transaction = 'NREC' and iv.location_no = ' RETURNS W')
left join invtran_view_oes iv1
on li.av_part_no = iv1.part_no
and (iv1.transaction = 'CORR+' and iv1.remark like 'STOCK FROM SP PALLET%')
left join oes_delsegview od
on od.catnr = li.catnr
and od.prodtyp = li.prodtyp
and od.packtyp = li.packtyp
left join oes_dpos dp
on od.ordnr = dp.ordnr
and od.posnr = dp.posnr
and od.segnr = dp.segnr
left join oes_dhead dh
on dp.dheadnr = dh.dheadnr
where li.cunr = '816900'
and substr(li.catnr,1,5) in ('RGMCD','RGJCD')
and li.item_type = 'FP'
and li.catnr = 'RGJCD221'
trunc(coalesce(iv.dated, iv1.dated, dh.actshpdate)) transaction_date
...但是,我丢失了一些日期;
您可以按以下方式使用 UNION -
WITH DATA AS(
<your query goes here>
)
SELECT A, b, c, d, e FROM DATA
UNION
SELECT A,b,c,d,f FROM DATA
UNION
SELECT A,b,c,d,g FROM DATA
其中 a、b、c、d、e、f、g 是原始查询中 select 列表的列别名。您可以在 UNION 查询中提供自己的列别名。