集計結果に基づいて新しい列を作成したいとします。例えば、入力データは以下のように(hereから借り):SQL Serverで新しい列として集計を追加する
Company Date Flag
------- ------- -----
001 201201 Y
001 201201 N
001 201202 N
001 201202 N
001 201202 Y
私がしたい出力される
Company Date Flag Percentage
------- ------- ----- ----------
001 201201 Y 0.5
001 201201 N 0.5
001 201202 N 0.66
001 201202 Y 0.66
001 201202 Y 0.66
あり、Iは、Yの(パーセンテージの凝集に参加する必要がありますフラグの列)をCompany
とDate
に基づいてもとの表に戻します。
これはおもちゃのデータに過ぎないことに注意してください。私の実際の仕事では、たくさんのテーブルに参加して、目的のテーブルを取得し、いくつかの集計を見つける必要があります。私がやったことは、次のようなものです:
SELECT *
FROM (
/* Lots of joins go here to obtain Table A */
) AS A
JOIN (
SELECT Percentage
FROM (
/* Percentage aggregation from Table A */
) AS P
) AS B
ON A.xxx = B.xx
問題が集約Percentage
を計算するとき、私は再び表Aを生成しなければならないことです。目的のテーブルを2度再生成せずに、集約を目的のテーブルに戻すことは可能ですか?ありがとう。
あなたが選択トンを行うことができます。*(ここではあなたの全体のクエリ)からトンとあなたはなしトンからすべてのフィールドへのアクセス権を持っているよりも何かを再生成する必要があります – GuidoG
テーブルに基づいたビューを作成しない理由はありますか? – Tyron78
[ウィンドウの機能](https://msdn.microsoft.com/en-us/library/ms189461.aspx)で、あなたが何をしているかわかります。 'Percentage = 1.0/COUNT(*)OVER(PARTITION BY Company、日付)' – GarethD