我有 2 张桌子:
- 表 A (
id as int, M as int,...
) - 表 B (
Aid as int , P as int,...
)
A 和 B 之间存在关系A.id = B.Aid
。父表是A,子表是B,这意味着A中的一行可能在B中有多行。
我需要编写一个返回以下信息的 T-SQL 查询:
- A的一些列和B中的相关行
- 并
(M / Sum(p)) as 'Percent'
为 A 的每一行计算这个
我有 2 张桌子:
id as int, M as int,...
)Aid as int , P as int,...
)A 和 B 之间存在关系A.id = B.Aid
。父表是A,子表是B,这意味着A中的一行可能在B中有多行。
我需要编写一个返回以下信息的 T-SQL 查询:
(M / Sum(p)) as 'Percent'
为 A 的每一行计算这个你可以这样做:
SELECT
a.M,
(a.M / pSum)
FROM tableA a
INNER JOIN
(
SELECT aid, SUM(p) pSum
FROM TableB
GROUP BY aid
) b ON A.id = B.Aid;
更新:如果您想从 中返回更多的一列,其中每个父记录tableb
的总和,您可以像这样加入更多时间:p
tablea
TableB
SELECT
a.M,
b.p,
(a.M / groupedb.pSum)
FROM tableA a
INNER JOIN TableB b ON A.id = B.Aid
INNER JOIN
(
SELECT aid, SUM(p) pSum
FROM TableB
GROUP BY aid
) groupedb ON A.id = groupedb.Aid;
但这将使计算来自表中每个记录的tableB
冗余中每个父记录的冗余的总和。tableA
B