2017-08-14 58 views
-7

我正努力將以下更新語句轉換爲select語句。我希望你可以幫助提供一些關於如何轉換的提示。將更新語句轉換爲選擇語句

UPDATE inventory_part_tab 
SET planner_buyer = (SELECT hb.buyer_code 
        FROM info.hb_pur_plan_upd1 hb 
        WHERE hb.part_no = inventory_part_tab.part_no 
         AND hb.contract = inventory_part_tab.contract), 
    last_activity_date = DECODE(contract, '01', TO_DATE(SYSDATE), '06', (TO_DATE(SYSDATE) - (3/24)), '20', TO_DATE(SYSDATE), '21', TO_DATE(SYSDATE)), 
    rowversion = DECODE(contract, '01', SYSDATE, '06', (SYSDATE-(3/24)), '20', SYSDATE, '21', SYSDATE, '12', (SYSDATE + (6/24))) 
WHERE contract IN ('01', '06', '20', '21') 
    AND prime_commodity NOT IN ('SPCSL','SPCKT','SPCCC','SPCGK','SPCMT') 
    AND planner_buyer <> (SELECT hb.buyer_code 
         FROM info.hb_pur_plan_upd1 hb 
         WHERE hb.part_no = inventory_part_tab.part_no 
          AND hb.contract = inventory_part_tab.contract) 
    AND EXISTS (SELECT * 
       FROM info.hb_pur_plan_upd1 hb 
       WHERE hb.part_no = inventory_part_tab.part_no 
       AND hb.contract = inventory_part_tab.contract); 
COMMIT; 
+1

您設想了哪些結果列選擇語句? – Andreas

+0

buyer_code,part_no和Contract – SolerPower

回答

0
UPDATE <TABLENAME> 
SET <fieldName> = <value> 
WHERE <conditons> 

SELECT (<value>) as <fieldName 
FROM <TABLENAME> 
WHERE <conditons> 

在這種情況下<value>是一個很大的子查詢,但工作原理相同,只是添加了括號。

0

爲更新語句轉換:

UPDATE tbl 
    SET a = foo 
    , b = bar 
WHERE stuff 

的select語句,這樣做:

SELECT foo AS a 
    , bar AS b 
-- , any other column from tbl you want, e.g. an ID 
    FROM tbl 
WHERE stuff 

這真的很簡單。