只是想问一下,是否可以更新派生表的结果。
我的代码如下:
UPDATE FROM (select a.*, row_number() over
(partition by device_util_id
order by service_point_util_id, install_date desc) as rownum
from eadwstage.test_device_locations a) tst
set DELTA_FLAG = 'D'
where tst.rownum <> 1
字符串
我的查询抛出了无效的SQL语句。
我还尝试在WHERE条件中添加DeviceID,但它将两个ID都更新为'D'
样本数据为:
+----------+-------------+---------------+------------+
| DeviceID | Location | DELTA_FLAG | ROWNUM |
+----------+-------------+---------------+------------+
| 1 | US | I| 1 |
| 1 | UK | U| 2 |
| 2 | MY | I| 1 |
| 3 | JP | I| 1 |
+----------+-------------+---------------+------------+
型
基本上,我想将rownum > 1的记录更新为'D' Delta_Flag。
下面是我想要的:
+----------+-------------+---------------+------------+
| DeviceID | Location | DELTA_FLAG | ROWNUM |
+----------+-------------+---------------+------------+
| 1 | US | I| 1 |
| 1 | UK | D| 2 |
| 2 | MY | I| 1 |
| 3 | JP | I| 1 |
+----------+-------------+---------------+------------+
型
- 注意:ROWNUM列不是表的一部分
数据库是Oracle或Teradata
1条答案
按热度按时间uemypmqf1#
UPDATE FROM
不是有效的Oracle SQL语法。在Oracle中,可以使用相关子查询(在
ROWID
伪列上进行相关):字符串
或者
MERGE
语句:型