下面是我在 SQL Server 2012 中尝试做的事情。我想用每个 AMT 值占表 1 总数的百分比来更新表 2。但是获得百分比的分母应该只是总和具有相同 MasterDept 的行。当我仅使用一个 MasterDept 加载表时,我可以使用此 SELECT 查询来获取正确的百分比,但在有多个 MasterDept 时不知道如何执行此操作。每个表中的前 2 列在结构和列中的数据上都是相同的。
SELECT ABCID,
[AMT%] = ClientSpreadData.AMT/CONVERT(DECIMAL(16,4),(SELECT SUM(ClientSpreadData.AMT)
FROM ClientSpreadData))
FROM ClientSpreadData
表数据
TABLE 1 (MasterDept varchar(4), ABCID varchar(20), AMT INT)
Sample Data (4700, 1, 25),
(4300, 2, 30),
(4700, 3, 50),
(4300, 4, 15)
TABLE 2 (MasterDept varchar(4), ABCID varchar(20), [AMT%] INT)
Sample Data (4700, 1, AMT%)
AMT% 应等于 AMT / SUM(AMT)。SUM(AMT) 应该只对表 1 中的 MasterDept 与表 2 中记录的 MasterDept 匹配的值求和。
那有意义吗?