Group By中的底层行

时间:2011-08-05 20:41:51

标签: sql sql-server

我有一个包含一定数量列和一个主键列的表(假设为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多名男学生的城镇的详细信息,并了解每个城镇的详细信息。

2 个答案:

答案 0 :(得分:1)

如何使用GroupKey加入2个表,你说它们是一样的?

或者如何做:

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

答案 1 :(得分:0)

您需要将分组的字段存储在临时表中,以便可以加入到原始表中。例如如果你在fieldA,fieldB和fieldC上分组,你需要像:

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