2011-08-05 15 views
1

私は特定の数の列と主キー列を持つテーブルを持っています(OriginalKeyと仮定します)。これらの列の特定のサブセットでGROUP BYを実行し、それらを主キー(GroupKeyと仮定)を持つ一時テーブルに格納します。後の段階では、これらのグループ(一時テーブルにある)の詳細を取得する必要があります。つまり、元のテーブルのどのグループがそのグループを形成しているのかを知る必要があります。簡単に言えば、私はGroupKeyとOriginalKeyの間のマッピングを知る必要があります。これを行う最善の方法は何ですか?前もって感謝します。グループの基礎行

例:後日

Table Student(
StudentID INT PRIMARY KEY, 
Level INT, --Grade/Class/Level depending on which country you are from) 
HomeTown TEXT, 
Gender CHAR) 

INSERT INTO TempTable SELECT HomeTown, Gender, COUNT(*) AS NumStudents FROM Student GROUP BY HomeTown, Gender 

、私は50人の以上の男子学生を持っており、それらの一つ一つの詳細を知っているすべての町についての詳細を知りたいと思います。

+1

サンプルデータと出力を提供できますか? –

答えて

0

あなたが戻って元のテーブルに参加することができますので、あなたは、あなたは一時テーブルでのグループ化されたフィールドを格納する必要があると思います。例えばフィールドA、フィールドB、およびフィールドCでグループ化した場合、次のようなものが必要です。

select original.id 
from original 
inner join temptable on 
    temptable.fieldA = original.fieldA and 
    temptable.fieldB = original.fieldB and 
    temptable.fieldC = original.fieldC 
+0

少なくとも一般的なケースでは、おそらく結果セットにフィールドA、B、Cが必要です。 –

+0

これは私が必要としていたすべてのものでした。私の挑戦は、私のGROUP BY文字列が動的に生成され、私のTempTableがGROUP BYのすべての可能な組み合わせに対応できるようにすべての列を持たなければならないということでした。動的SQLを使用して動的にJOIN節を生成するだけでした。 – Anand

1

GroupKeyを使用して2つのテーブルを結合することはどうでしょうか。ことについて

またはどのように:

select * from OriginalTable where 
GroupKey in (select GroupKey from my_temp_table)