早上好,
我在DB2服务器(IBM Power System)上运行下面的SELECT语句,它根据时间戳从tableB返回最新的记录(都是正确的)。
SELECT * FROM library1/tableA
JOIN library1/tableB on tableB.PRDCOD = tableA.NPROD
WHERE tableB.PRDCOD = '5520' and tableA.SPRTXT01 <> '0/9'
ORDER BY tableB.timstp DESC FETCH NEXT 1 ROWS ONLY
我现在需要更改此语句以更新tableA并设置字段SPRTXT 01 = '0/9',但前提是tableB.SRVRSP= 'SUCCESSFUL',即tableB中的最新记录具有'SUCCESSFUL'响应。
但是我不知道如何正确地编排这份声明的格式。有人能帮忙吗?
我已经尝试了下面的方法,但这会更新表中的所有行
UPDATE library1/tableA
SET tableA.SPRTXT01 = '0/9'
Where exists (
Select '1'
FROM library1/tableA
JOIN library1/tableB on
tableB.PRDCOD = tableA.NPROD
WHERE tableB.PRDCOD = '5520' and tableB.SRVRSP = 'SUCCESSFUL'
and tableA.SPRTXT01 <> '0/1'
ORDER BY tableB.timstp DESC FETCH NEXT 1 ROWS ONLY)
并且我认为它没有正确地应用选择,也就是说,它没有从表B中选择最新的记录,然后应用RVSRP = 'SUCCESSFUL'检查,而是只选择了表B中SRVSRP = 'SUCCESSFUL'的最新记录。
谢谢
1条答案
按热度按时间xpszyzbs1#
试试这个:
| 生产|SPRTXT 01系列|
| - -|- -|
| 小行星5520| 0/9|
| XXXX年||
fiddle