1
我有一个包含了下列的表price_info:SQL服务器 - 更新多条记录与同一个表中加入
group_id (int)
product_id (int)
date (datetime)
price_override (money, nullable)
一些样本值:
group_id product_id date price_override
1 1 2014-02-10 25
1 1 2014-02-11 30
1 1 2014-02-12 NULL
1 2 2014-02-10 40
1 2 2014-02-11 40
1 2 2014-02-12 40
1 3 2014-02-10 NULL
1 3 2014-02-11 NULL
1 3 2014-02-12 NULL
2 1 2014-02-10 42
2 1 2014-02-11 52
2 1 2014-02-12 70
2 2 2014-02-10 28
2 2 2014-02-11 87
2 2 2014-02-12 96
2 3 2014-02-10 45
2 3 2014-02-11 89
2 3 2014-02-12 NULL
我想要做什么是我想要更新product_id的price_override(并应用一些计算),其中group_id和date是相同的,并且price_override不为null。
我想要做的计算是通过@ratio(浮点)相乘,并添加@Offset(浮点)
例如,对于GROUP_ID 1,PRODUCT_ID 3,我要设置它的price_override是( price_override * @ratio)+ @offset of group_id 1,product_id 2(其price_override不为空)。
我试过搜索,但到目前为止,我发现的一切都是基于使用唯一ID更新只有一行。
按所要求的编辑,更新给出的值应为以下单个行:
update price_info set price_override = @value where group_id = @group_id and product_id = @product_id and date = @date
只需编写where子句以选择所有符合条件的行(如第一段中所述),然后使用set语句来执行第二段中的计算。更新语句的其余部分与单行更新的语法相同。 –
请按照您的要求显示您尝试过的功能无法正常工作。你会用什么公式来更新单行?另外,这些变量来自哪里并且它们对于所有行都是相同的? –
我已经添加了更新单行的查询。我不知道更新多行所需的语法,我还没有找到任何指导我的地方。 – CJR