在Oracle中使用合并来使用联接更新父表

时间:2018-10-26 12:51:35

标签: oracle

我有一条如下的SQL语句,由于它不支持Joins in Update,所以无法在Oracle中执行该语句。我尝试使用临时表进行更新并完成了工作,但是,我想使用Merge语句,但未能编写代码。 让我知道Oracle是否有可能在更新中使用联接而不增加任何性能开销。

 UPDATE A SET 
       YearStartPD = B.PERIOD_CODE,
    YearEndPD  = A.PERIOD_CODE,
    PY_YearStartPD = C.PERIOD_CODE,
    PY_YearEndPD = A.PY_WeekEndPD
FROM dbo.DIM_TIME A                  
    INNER JOIN 
    (
        select PERIOD_CODE,WEEK_PERIOD_CODE,YEAR_CODE from dbo.DIM_TIME 
WHERE WEEK_PERIOD_CODE = '01'
    ) B ON  B.Year_Code = A.Year_Code
    LEFT JOIN
    (
        select PERIOD_CODE,WEEK_PERIOD_CODE,YEAR_CODE from dbo.DIM_TIME 
 WHERE WEEK_PERIOD_CODE = '01'
    ) C ON  C.Year_Code = A.Year_Code - 1

0 个答案:

没有答案