-3

考えられるすべてのことを試しましたが、この SQL エラーを解決できませんでした:

SQL エラー: ORA-00933: SQL コマンドが正しく終了していません

これがOracle SQLです。

    UPDATE SALES_DATA_FAMILY_2007 A 
    SET A.POG_ID=B.POG_ID 
    FROM POG_HIERARCHY B 
    WHERE A.FAMILY_ID=B.FAMILY ;

私が試した1つの代替案は以下の通りです。残念ながら、別のエラーが発生します: ORA-01427: 単一行のサブクエリが複数の行を返します

    UPDATE SALES_DATA_FAMILY_2007 
    SET POG_ID= (SELECT POG_HIERARCHY.POG_ID FROM POG_HIERARCHY 
    WHERE SALES_DATA_FAMILY_2007.FAMILY_ID=POG_HIERARCHY.FAMILY_ID) 
    WHERE EXISTS (SELECT POG_HIERARCHY.POG_ID FROM POG_HIERARCHY 
    WHERE SALES_DATA_FAMILY_2007.FAMILY_ID=POG_HIERARCHY.FAMILY_ID) 
    ;

助けてください!

4

4 に答える 4

2

これを試して:

UPDATE SALES_DATA_FAMILY_2007 A
SET A.POG_ID =
(   
  SELECT P.POG_ID 
  FROM POG_HIERARCHY P
  WHERE A.FAMILY_ID = P.FAMILY_ID 
)
于 2012-01-29T03:55:38.990 に答える
1
UPDATE SALES_DATA_FAMILY_2007 A 
SET A.POG_ID= (select B.POG_ID 
                 FROM POG_HIERARCHY B  
                WHERE A.FAMILY_ID=B.FAMILY) ;

これは、特定の FAMILY に対して POD_HIERARCHY に対応する行が最大で 1 つある場合にのみ機能します。POD_HIERARCHY に複数の行がある場合は、値を使用する POD_HIERARCHY のどの行を決定する必要があります。

于 2012-01-29T03:52:27.980 に答える
0
UPDATE SALES_DATA_FAMILY_2007 A 
SET A.POG_ID= (select B.POG_ID 
                 FROM POG_HIERARCHY B  
                WHERE A.FAMILY_ID=B.FAMILY)
WHERE A.POG_ID IN (SELECT C.POG_ID FROM POG_HIERARCHY C
                   WHERE A.FAMILY_ID = C.FAMILY);
于 2013-09-17T21:55:05.043 に答える