我有两张桌子:
id as int, M as int,...
)Aid as int , P as int,...
) A.id = B.Aid
上的A和B之间存在关系。父表是A,子表是B,这意味着A中的一行可能在B中有多行。
我需要编写一个返回以下信息的T-SQL查询:
(M / Sum(p)) as 'Percent'
答案 0 :(得分:0)
你可以这样做:
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
冗余的计算冗余为计算。{/ p>