2017-04-17 1 views
-1

조금 둘러 보았지만 필요한 것과 비슷한 것을 찾을 수 없습니다. ID에 조인되는 두 개의 테이블이 있고 두 번째 테이블에는 동일한 ID를 사용하는 여러 속성에서 첫 번째 테이블에 대한 여러 세부 정보가 있습니다. 따라서 ID 1에는 A, B, C 등의 속성이 있으며 각 ID에는 총 9 개가 있습니다. 모든 다른 속성을 가진 ID 당 하나의 행을 반환하고 싶습니다.조인 테이블에 많은 값이있는 경우 단일 행 반환

내 테이블은 다음과 같습니다.

MAIN_Table 
    ID | Name 
------ | ------ 
    100 | Frank 
    200 | Bill 
    300 | Anne 


     Property_Table 
    ID | Prop | Value 
------ | ------| ----- 
    100 | AA | $4 
    100 | BB | ER 
    200 | BB | AMB 
    300 | AA | $10 
    200 | AA | $5 
    300 | BB | ER 

나는, 내가

ID  | Name | Prop_AA | Prop_BB 
----- | ------ | ------ | ------- 
100 | Frank | $4  | NULL 
100 | Frank | NULL  | ER 
200 | Bill | $5  | NULL 
200 | Bill | NULL  | AMB 
300 | Anne | $10  | NULL 
300 | Anne | NULL  | ER 

... /이 원하는 내가 것 좋아하지 않는 대신 한 줄에의 나열된 각 값에 대한 행을 반환하는 것 몇 가지 경우 문을 시도 이처럼 ID 당 한 줄에 모든 것이 있어야합니다.

+0

나는, Prop_AA로하지만 다른 많은 열이에 의해 그룹에 이들 각각을 추가해야 내가 맥스 (소품 = AA 다음 값이 때 케이스)를 사용하여 원하는 것처럼 보이는 결과를 얻을 것 이 때문에 이로 인해 오류가 발생할 수 있습니까? [Max Statement의 출처] (http://stackoverflow.com/questions/13284952/add-join-results-as-new-column-based-on-values-from-join) – jjmp

답변

0

필자는 필 요한 결과를 얻기 위해 2 개의 공통 테이블 표현식을 사용했습니다. Common_Table_Expression

--CTE to get Prop AA's Id & Value 
WITH Prop_AA AS 
(
    SELECT ID,Value 
    FROM Property_Table 
    WHERE Prop = 'AA' 
), 
--CTE to get Prop BB's Id & Value 
Prop_BB AS 
(
    SELECT ID,Value 
    FROM Property_Table 
    WHERE Prop = 'BB' 
) 

SELECT mt.ID,Name,aa.Value as 'Prop AA',bb.Value as 'Prop BB' 
FROM MAIN_Table mt 
    JOIN Prop_AA aa ON mt.ID = aa.ID -- Join Prop_AA 
    JOIN Prop_BB bb ON mt.ID = bb.ID -- Join Prop_BB 
ORDER BY mt.ID 
관련 문제