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