sql - Oracle SQL - 使用合并函数

标签 sql oracle coalesce

我真的无法理解 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'

enter image description here 我想要实现的是所有日期按日期顺序排列的一列。 我尝试用...替换我的日期

trunc(coalesce(iv.dated, iv1.dated, dh.actshpdate)) transaction_date

...但是,我丢失了一些日期;

enter image description here 我怎样才能达到以下结果?

enter image description here

最佳答案

您可以按以下方式使用 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 是原始查询中选择列表的列别名。您可以在 UNION 查询中提供自己的列别名。

关于sql - Oracle SQL - 使用合并函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28296678/

相关文章:

php - 与 CodeIgniter 中的 GROUP_CONCAT 相呼应的多行数据总和

mysql - 使用 case 语句更新查询,给出缺少关键字错误

sql - 如何在 Oracle 中将日期转换为日期时间?

oracle - SQLException 类似于归档程序错误。仅在内部连接,直到释放

R:合并大数据框

coalesce - 错误: COALESCE types timestamp without time zone and integer cannot be matched (Postgresql)

mysql - 在 SQL 查询中同时使用 "update"和 "join"来增加数据库值

php - 带有准备语句的多个 AVG

mysql - 如何以逗号分隔获取重复的列值

twig - Twig是否有空合并运算符?