質問

長い質問のタイトルは申し訳ありません。

私はこれで敗者になっていると思いますが、チャンスはありません。

テーブルの計算フィールドの計算を、別のテーブルのフィールドに適用された集計関数の結果にすることは可能ですか。

i.e。

「mug」というテーブルがあり、これには「color」という子があります(これは私の英国の頭を痛めますが、ベンダーは米国からのものです、あなたは何をしますか?)、これは順番に、 「サイズ」と呼ばれる子。各テーブルにはsoldというフィールドがあります。

size.soldは、販売されている特定の色とサイズのマグカップごとに1ずつ増加します。

color.soldをSUM size.soldの集合体にします。WHERE size.colorid = color.colorid

mug.soldをSUM color.soldの集約にしますWHERE color.mugid = mug.mugid

とにかくmug.soldとcolor.soldをうまく機能させる方法はありますか、それともトリガーをいじりまわす必要がありますか?

役に立ちましたか?

解決

計算列が別のテーブルを直接参照することはできませんが、ユーザー定義関数を参照することはできます。このようなソリューションを実装する例へのリンクを次に示します。

http://www.sqlservercentral.com/articles/User -Defined + functions / complexcomputedcolumns / 2397 /

他のヒント

いいえ、これを行うことはできません。計算列は、同じ行の他のフィールドの値からのみ導出できます。別のテーブルから集計を計算するには、ビューを作成する必要があります。

アプリケーションで統計を表示する必要がある場合は、次の質問をしてください:

  1. これをリアルタイムで表示することは本当に必要ですか?もしそうなら、なぜですか?これを行うことが本当に必要な場合は、トリガーを使用してテーブルを更新する必要があります。 これは、非正規化に関する短いウィキペディアの記事にリンクしています。トリガーは、テーブルの更新の書き込みパフォーマンスに影響を与え、トリガーがアクティブになっていることに依存します。
  2. レポートの目的にのみ必要な場合は、ビューまたはレポートで計算を実行できます。
  3. 頻繁なアドホックレポートをサポートする必要がある場合は、データマートとオーバーナイトETLプロセスの領域に入る可能性があります。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top