0

テーブルの列とともに行を更新できますか。
3 年間の単一メンバーの金額を更新するテーブルがありました

次のクエリを使用しました

update ahd
   set amount1=(select a.amnt1
                  from ahd inner join ahdtmp a on ahd.member_key=a.member_key
                 where ahd.date1=a.date1
                   and a.status='FALSE'
                   and a.member_key in (select distinct member_key
                                          from ahd))

これを実行すると

行 2 のエラー:
ORA-01427: 単一行のサブクエリが複数の行を返します

一時テーブルはahdtmpです

create table ahdtmp(
member_key number(10),
date1 date,
amnt1 number(10,2),
amnt2 number(10,2),
date_amend date,
Status varchar2(10));

これについて提案してください。

何がうまくいかなかったのでしょうか..

4

3 に答える 3

1

おそらく、次のスクリプトが役立つでしょう。これは一般的なコードです (これは単なる例です)。

CREATE TABLE SOURCE(
  s_key int,
  s_name varchar2(100));

CREATE TABLE TARGET(
  t_key int,
  t_name varchar2(100));


INSERT INTO SOURCE VALUES(1,'A');
INSERT INTO SOURCE VALUES(2,'B');
INSERT INTO SOURCE VALUES(3,'C');
INSERT INTO SOURCE VALUES(4,'D');

INSERT INTO TARGET VALUES(1,'Z');
INSERT INTO TARGET VALUES(2,'Z');
INSERT INTO TARGET VALUES(3,'Z');
INSERT INTO TARGET VALUES(4,'Z');

/*HERE THE CODE*/   
MERGE
INTO    target
USING   (
        SELECT  s.s_name,s.s_key
        FROM    source s
        )
ON      (t_key = s_key)
WHEN MATCHED THEN
UPDATE
SET     t_name = s_name;

この例を試すためのリンクは次のとおりです(正常に動作します)sql fiddle

よくわかりませんが、クエリは次のようになります。

MERGE
INTO    ahd
USING   (
        SELECT a.amnt1
        FROM ahdtmp a
        )
ON      (ahd.member_key=a.member_key)
WHEN MATCHED THEN
UPDATE
SET     amount1 = amnt1
WHERE ahd.status='FALSE'
    AND ahd.member_key IN (SELECT DISTINCT member_key FROM ahd);
于 2013-09-04T12:46:57.063 に答える