0

私は、オラクルでいくつかの非常に困難な仕事をしようとしていました。

3列を含むテーブルがあります

    ColA   ColB   ColC  ColD
  ---------------------------
    123     N     null   1
    100     Y     AAAA   1
    123     Y     XXXX   2
    100     Y     YYYY   2

次の結果セットを表示するには、 ColBColCを更新する必要があります。

    ColA   ColB  ColC       ColD
  -------------------------------
    123    Y     XXXX         1
    100    Y     AAAA\YYYY    1
    123    Y     XXXX         2
    100    Y     YYYY         2

一意のレコードのいずれかにelseが含まれている場合は、 ColBを更新する必要があります。YYN

ColCの場合、両方の行に値が含まれている場合は、値だけが含まれているa で区切られた値を更新したいと考えています。\

私は更新クエリでこれをやろうとしましたが、ghosh.........不可能のようです。

誰でも可能な解決策などを提案できますか?

必要に応じて PL/SQL を使用するように言われました。それでいいの?

PS:似ているように見える他の質問も見ましたが、まだ解決策はありません。

編集: ColDがある行だけを更新する必要があり1ます。

4

1 に答える 1

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;

これから、MERGEのようなものを撃つだけです

update 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
于 2013-01-09T13:53:53.740 に答える