当有两个相同的值时,SQL UPDATE SET一列等于0.000

问题描述 投票:1回答:1

所以这里是我试图更新列距离的问题,首先是为每个ownerID加上距离,之后当有一个具有相同id地址的记录时,第一条记录应该记忆距离,第二条记录应该是0.000

这是预期的结果

enter image description here

到目前为止,我做了第一部分,使用此代码计算距离

UPDATE Action_Distance
SET [distance]=(SELECT sum([distance])
               FROM Action a2
               WHERE [name]='travel' and a2.ownerID = Action_Distance.ownerId 
               )

               WHERE [name]='drive_through' 

我不明白应该怎么做。

sql sql-update sql-server-2014-express
1个回答
0
投票

假设id_action对于每一行都是唯一的,那么CASE表达式和NOT EXIST子查询可以这样使用:

UPDATE Action_Distance A
SET [distance] = CASE
                    WHEN NOT EXISTS (SELECT 'anything' 
                                     FROM Action_Distance B
                                     WHERE B.[name] = 'drive_through' 
                                       AND a.ownerId = b.ownerId
                                       AND a.id_action > b.id_action)
                       THEN (SELECT SUM([distance])
                             FROM Action a2
                             WHERE [name] = 'travel' 
                               AND a2.ownerID = a.ownerId)
                       ELSE 0
                 END
WHERE 
    [name] = 'drive_through' 
© www.soinside.com 2019 - 2024. All rights reserved.