由于我的英语不完美,我会尝试用一个例子来解释
我有要更新金额的表 A
groupID reservationID Date Amount
26 1 2018-06-01 NULL
26 2 2018-06-01 NULL
26 3 2018-06-01 NULL
27 4 2018-06-04 NULL
27 5 2018-06-04 NULL
和 tableB 持有每个组的总金额
groupID Date Amount
26 2018-06-01 60
27 2018-06-04 100
我试图找到一种方法
groupID 26 数量为 60 可以更新第一个表 groupID26 行,每行 20 (60 / 3)
groupID 27 数量为 100 可以更新第一个表 groupID27 行,每行 50 (100/2)
换句话说,一个查询足够聪明,可以将 tableB 中的总量除以 tableA 中的行数,其中:
tableA.Date = tableB.Date
AND tableA.groupId = tableB.groupID
谢谢
这是一个示例代码ddl
DECLARE @tableA TABLE
(group_id numeric(10,0) null,
reservation_id numeric(10,0) null,
ondate datetime null,
amount numeric(10,2) null)
DECLARE @tableB TABLE
(group_id numeric(10,0) null,
ondate datetime null,
amount numeric(10,2) null)
INSERT @tableA
SELECT 26,1,'2018-06-01',NULL
INSERT @tableA
SELECT 26,2,'2018-06-01', NULL
INSERT @tableA
SELECT 26,3,'2018-06-01', NULL
INSERT @tableA
SELECT 27,4,'2018-06-04', NULL
INSERT @tableA
SELECT 27,5,'2018-06-04', NULL
INSERT @tableB
SELECT 26,'2018-06-01',60
INSERT @tableB
SELECT 27,'2018-06-04',100
你可以这样解决: