更新列:与基于另一列的行除以2的值相乘

时间:2017-11-21 00:06:28

标签: sql

由于我的SQL知识有限,我需要一些更新语句的帮助。

表格示例

   MLv   | Prob1 | Prob2
------------------------
    1    |   0   | 0,080
    2    |   0   | 0,075
    3    |   0   | 0,060
    4    | 0,070 | 0,055
    5    | 0,060 | 0,040

对于每一行,我需要乘以Prob1&的值。 Prob2的值来自MLv除以2.我想这样做而不创建一个新列来存储该乘数。

到目前为止我的代码:

USE MyDatabase
DECLARE @MULTIPLIER INT
SET @MULTIPLIER = (SELECT MLv / 2.0 FROM _MyDatabaseTable)

UPDATE _MyDatabaseTable
SET Prob1 = COALESCE (Prob1 * @MULTIPLIER, Prob1)

UPDATE _MyDatabaseTable
SET Prob2 = COALESCE (Prob2 * @MULTIPLIER, Prob2)

这显然不起作用,因为它不知道要选择哪个MLv值以及我被困的地方,因为我不知道如何做到这一点

2 个答案:

答案 0 :(得分:0)

您只需使用该列。不需要变量:

UPDATE _MyDatabaseTable
    SET Prob1 = COALESCE(Prob1 * MLV / 2.0, Prob1),
        Prob2 = COALESCE(Prob2 * MLV / 2.0, Prob2);

只需要进行一次更新。

答案 1 :(得分:0)

这只是单线Qry,尝试如下所示:

UPDATE _MyDatabaseTable    SET Prob1 = COALESCE (ISNULL(Prob1,0) * (MLV / 2) , Prob1),Prob2 = COALESCE (ISNULL(Prob2,0) * (MLV / 2), Prob2);