-1

一部のデータを移行する SQL スクリプトを作成しようとしています。次の状況を想像してください。

移行するテーブル:

OLDTABLE
---------------
ID    VALUE     OLDVALUE
1     A         A
2     B         B

期待される目標状態

NEWTABLE
---------------
ID    VALUE     NEWVALUE
1     A         Y
2     B         Z

私がこれまでに持っているものは次のとおりです。

INSERT INTO NEWTABLE (ID, VALUE, NEWVALUE)
SELECT
    ID,
    VALUE,
    OLDVALUE
FROM OLDTABLE;

OLDTABLE.OLDVALUE私の質問は、選択した値を挿入する前にどのように変更してNEWTABLE.NEWVALUE、すべての A が Y になり、すべての B が Z になるようにするかです。

4

2 に答える 2

1

古き良きCASE表現:

INSERT INTO NEWTABLE (ID, VALUE, NEWVALUE)
SELECT
    ID,
    VALUE,
    CASE OLDVALUE
       WHEN 'A' THEN 'Y'
       WHEN 'B' THEN 'Z'
       ELSE OLDVALUE
    END
FROM OLDTABLE;

A(またはBでない場合は、変更しないでおく必要があると想定しています)

于 2013-06-18T08:26:52.513 に答える
1

これを試して:

INSERT INTO NEWTABLE (ID, VALUE, NEWVALUE)
SELECT ID, VALUE,
  CASE WHEN OLDVALUE = 'A' THEN 'Y'
       WHEN OLDVALUE = 'B' THEN 'Z'
       ELSE 'NOT FOUND' -- handle NOT FOUND case here
  END AS NEWVALUE
FROM OLDTABLE
于 2013-06-18T08:27:09.513 に答える