我有 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的总和,您可以像这样加入更多时间:ptableaTableB
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冗余中每个父记录的冗余的总和。tableAB