2011-08-05 3 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

다시 원래 테이블에 가입 할 수 있도록, 당신은 임시 테이블에 그룹화 된 필드를 저장해야 할 것입니다. 예 : 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 
+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) 
관련 문제