我只是想与甲骨文做一些艰巨的任务。
我有一个包含3列的表
ColA ColB ColC ColD
---------------------------
123 N null 1
100 Y AAAA 1
123 Y XXXX 2
100 Y YYYY 2
我需要更新 ColB 和 ColC 以显示以下结果集。
ColA ColB ColC ColD
-------------------------------
123 Y XXXX 1
100 Y AAAA\YYYY 1
123 Y XXXX 2
100 Y YYYY 2
如果任何唯一记录包含Y
其他Y
,我需要使用N
更新 ColB 。
对于 ColC ,我想更新由\
分隔的值,其中两行都包含值,否则只是值。
我试图用更新查询来做这个但是ghosh .........似乎不可能。
任何人都可以建议一个可能的解决方案吗?
如果需要,我被告知要使用PL / SQL。那会吗?
PS:我还看到了其他似乎相似的问题,但还没有得到任何解决方案。
编辑:我们只需更新 ColD 为1
的行。
答案 0 :(得分:1)
查找colB和colC外观的查询:
select
colA,
case when count(case when colB='Y' then 1 end) > 0
then 'Y'
else 'N'
end as colB,
LISTAGG(colC, '\') WITHIN GROUP (ORDER BY colA) AS colC
from your_table
group by colA;
从这里开始,你只需拍摄像
这样的MERGEupdate your_table a
using query b
on (a.colA=b.colB and colD=2)
when matched then update
a.colB=b.colB,
a.colC=b.colC