Sql 将一行字段设置为其他两行字段的乘积

Sql 将一行字段设置为其他两行字段的乘积,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个这样的SQL表结构 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 7 4 25 4 1 6 5 26 5 2 10 5 26 6 3 8 3 26 我想写一个脚本,它将用a=3行中的B&C列更新a=1和a=2的乘法值(对于D列的相同值) 所以结果应该是 Id A B

我有一个这样的SQL表结构

Id    A     B    C   D
1     1     5    6   25
2     2     10   5   25
3     3     7    4   25
4     1     6    5   26
5     2     10   5   26
6     3     8    3   26
我想写一个脚本,它将用a=3行中的B&C列更新a=1和a=2的乘法值(对于D列的相同值)

所以结果应该是

Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 50 30 25 4 1 6 5 26 5 2 10 5 26 6 3 60 25 26 Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 50 30 25 4 1 6 5 26 5 2 10 5 26 6 3 60 25 26
如何在SQL中编写这样的代码?

一种可能的方法是将表自身连接两次:

update T3
set
    T3.B = T1.B * T2.B,
    T3.C = T1.C * T2.C
from [Table] T3
    join [Table] T1 on T1.A = 1 and T1.D = T3.D
    join [Table] T2 on T2.A = 2 and T2.D = T3.D
where
    T3.A = 3

A的值是否总是1,2,3?是的,它们可以是1,2,3,4和5。但是脚本应该只更改值为3的行,并将它们设置为Row1 value*Row2 value