2016-12-08 5 views
0

표에 두 개의 열에 대한 데이터를 얻을 가입 사용 SQL 서버 2008 - 한 두 테이블 아래 내가 가진 1

AnalyseKey | Name 
1   | Apple 
2   | Pear 
3   | Orange 
4   | Banana 
5   | Fresh 
6   | Bad 
7   | Worse 
8   | Awesome 

거기인가 :

표 :

Cparty |Analyse1 |Analyse2 
A  | 1  | 5 
B  | 2  | 6 
C  | 3  | 7 
D  | 4  | 8 

표 2 방법은 내부 조인 아래에 결과를 피하기 위해?

Cparty | Analyse1 | Analyse2 
A  | Apple  | Fresh 
B  | Pear  | Bad 
C  | Orange  | Worse 
D  | Banana  | Awesome 

내 테이블에는 20 개의 다른 열, Analyse1,2.3 ....이 포함되어 있으며 키 값은 모두 동일한 테이블에 있습니다.

+0

왜 내부 조인이하지 말았어야? 두 개의 내부 조인 문제는 무엇입니까? –

+1

데이터가 정규화 된 경우 Pivot을 사용할 수 있습니다. 현재로서는 추가 한 각 분석 열에 대해 조인이 필요하다고 생각합니다. –

+0

그러면 20+ 내부 조인과 같이 만들어야합니다. – Haggan

답변

1

원하는 열의 수만큼 확장하거나 대신 동적 피벗을 사용할 수 있습니다.

SQL DEMO

WITH unpvt as (
    SELECT [Cparty], [Analyse], [AnalyseKey] 
    FROM Table1 
    UNPIVOT 
     ([AnalyseKey] FOR [Analyse] IN 
      (Analyse1, Analyse2) 
    )AS unpvt 
), decode as ( 
    SELECT u.[Cparty], u.[Analyse], t.[Name] 
    FROM unpvt u 
    JOIN Table2 t 
     ON u.[AnalyseKey] = t.[AnalyseKey] 
) 
SELECT [Cparty], [Analyse1], [Analyse2] 
FROM decode 
PIVOT 
(
MAX(Name) 
FOR Analyse IN ([Analyse1], [Analyse2]) 
) AS PivotTable 

OUTPUT

enter image description here