1

私は2つのテーブルを持っています:

  • 表 A ( id as int, M as int,...)
  • 表B ( Aid as int , P as int,...)

上の A と B の間には関係がありA.id = B.Aidます。親テーブルは A で、子テーブルは B です。これは、A の 1 つの行が B に複数の行を持つ可能性があることを意味します。

次の情報を返す T-SQL クエリを作成する必要があります。

  • A のいくつかの列と B の関連する行
  • (M / Sum(p)) as 'Percent'また、Aの各行についてこれを計算します
4

1 に答える 1

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;

SQLフィドルデモ

更新:から複数の列を返したい場合は、の各親レコード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;

更新されたSQLフィドルデモ

ただし、これにより、テーブルの各レコードの冗長性tableBの各親レコードの冗長性から得られる合計が計算されます。tableAB

于 2012-12-10T08:02:37.637 に答える