Oracle 10g:解析2列合并重复项

时间:2018-08-27 13:52:14

标签: sql oracle10g

我有一个包含3列的表格: DATE_ADATE_BISSUE DATE_ADATE_B可以通过3种可能的方式填充: 要么都有一个值,要么只有一个有值,如下所示:

DATE_A    |  DATE_B   | ISSUE
----------+-----------+-----------
20130301  | 20140101  | bla 
20150801  | null      | foo
null      | 20180701  | bar

我需要分析该表以填充新表,同时DATE_A和DATE_B都填充单个列DATE_M。 如果要插入{{1}的DATE_A(或DATE_B)值已经存在于DATE_M中,则必须在源DATE_M后面附加现有的{{1 }} ISSUE。下面的示例说明了原理。

示例

DATE_M

目的地

ISSUE

问题

是否可以编写一个执行此操作的查询,还是应该编写一个存储过程?如果一个查询可以,那会是什么?

1 个答案:

答案 0 :(得分:2)

如果我的理解正确,那么您需要union all的日期值和字符串汇总。 listagg()是11g中引入的,但是您可以使用wm_concat()

select dte, wm_concat(issue) as issues
from ((select date_a as dte, issue from t where date_a is not null) union all
      (select date_b, issue from t where date_b is not null)
     ) di
group by dte
order by dte;