T-SQL更新问题

时间:2017-02-15 20:18:52

标签: sql sql-server

有两个Tables ATable B

表A

Date          Budget
9-1-2016        21
9-2-2016        10

表B

Date          Amount      Budget
9-1-2016        12
9-1-2016        15
9-1-2016        17
9-2-2016        15
9-2-2016        10
9-3-2016        12

我想将表A 中的每日预算划分为相应的项目 表B 如下:

Date          Amount      Budget
9-1-2016        12          7
9-1-2016        15          7
9-1-2016        17          7
9-2-2016        15          5
9-2-2016        10          5
9-3-2016        12          0

例如,表A 9-1-2016的预算分为表B 中具有相同日期的3个项目。

1 个答案:

答案 0 :(得分:2)

这应该做的工作:

注意我在表A中使用了LEFT JOIN,只是为了处理不存在的预算。

update tableB
set Budget = coalesce(a.Budget,0) / c.numB
from tableB b
     left join tableA a on a.Date = b.Date
     inner join (select Date, count(*) as numB
                 from tableB
                 group by date) c on c.Date = b.Date;