以下は、私が SQL Server 2012 でやろうとしていることです。各 AMT 値が表 1 の合計に対する合計の % で表 2 を更新したいのですが、% を取得するための分母は、同じ MasterDept を持つ行。この SELECT クエリを使用して、MasterDept が 1 つしかないテーブルをロードするときに正しいパーセンテージを取得できますが、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 と一致する値のみを合計する必要があります。
それは理にかなっていますか?