内部联接的Oracle SQL更新

时间:2014-04-24 10:34:49

标签: sql oracle inner-join dst

坚持今天早上我有点简单。

我有以下问题,读数和夏令时有点疯狂。

我需要在下面设置OLD = NEW。

select d.t0100 as tab1,
       t.t2400 as tab2
    from reportro.non_dst_readings d
        inner join reportro.dst_readings t
            on d.cust = t.cust
            and to_date(d.readdate_ndst, 'dd-mmm-yy') 
                 = (to_date(t.readdate, 'dd-mmm-yy') -1);

^^但是上面的选择不起作用,更不用说更新了。

我打算通过以下方式更新它们:

update (
select d.t0100 as tab1,
       t.t2400 as tab2
    from report.non_dst_readings d
        inner join report.dst_readings t
            on d.cust = t.cust
            on to_date(d.readdate_ndst, 'dd-mmm-yy') 
                 = (to_date(t.readdate, 'dd-mmm-yy') -1)
        )
 set old = new;

有什么想法吗?

再次感谢,如果没有StackOverflow,我会迷失方向:)

1 个答案:

答案 0 :(得分:1)

NEW是Oracle中的关键字,使用其他内容作为标识符。 同样纠正ON语法,JOIN只能有一个ON子句

update (
select d.t0100 as oldVal ,
       t.t2400 as newVaL
    from report.non_dst_readings d
        inner join report.dst_readings t
            on d.cust = t.cust
            WHERE to_date(d.readdate_ndst, 'dd-mm-yyyy') 
                 = (to_date(t.readdate, 'dd-mm-yyyy') -1)
        )
 set oldVal = newVaL;