2017-01-09 14 views
0

당신에게 부여하려면 간단한 요약 - 내가하고 싶은 : 그들은 때문에

1. (두 테이블 모두 포함 된 주소록 정보,

2. 연결할의 전화 번호 지역 번호 '와'전화 번호 '가입

3. 열 1의 '주소록 #'이 반복되는 경우 정보가 같은 행에 나타납니다 (아래 예 참조).표 1 (ABC_F0115)에서SQL에서 행을 열에 동적으로 바꾸는 방법은 무엇입니까?

필드 : 여기


은 내가 사용하고있는 테이블과 필드입니다

'주소록 #'
'전화 종류'
'전화 지역 코드 '
"전화 번호'

표 2의 필드 (ABC_F0 101) :
'주소록 #'
'주소록 유형'

나의 현재 SQL은 다음과 같습니다

SELECT WPAN8 'Address Book#', WPPHTP 'Phone Type', WPAR1 'Phone Area Code', WPPH1 'Phone Number', ABAT1 'Address Book concat('(',LTRIM(RTRIM(WPAR1)),')', ' ', WPPH1) AS 'Full Phone Number' FROM ABC.F0101 JOIN ABC.F0115 ON WPAN8=ABAN8 WHERE ABAT1='AR'; 



그것은 비슷한 테이블을 반환 아래 :


| 주소록 # | 전화 번호 | PhoneAreaCode | 전화 번호 |
| ___________ _ _________ _ _____________ _ ___________ |
| 2160 ________ | 셀 ______ | 000 __________ | 000-0000 _____ |
| 2160 ________ | 팩스 ______ | 111 __________ | 111-1111 ______ |
| 2161 ________ | 셀 ______ | 222 __________ | 222-2222 _____ |
| 2161 ________ | 팩스 ______ | 333 __________ | 333-3333 _____ |
| 2162 ________ | 홈 ____ | 444 __________ | 444-4444 _____ |


그러나, 나는 같이 반환 된 테이블을 싶습니다 | 주소록 번호


| PhoneType1 | 전화 번호 1 | PhoneType2 | 전화 번호 2 | PhoneType3 | 전화 번호 3 |
| ___________ _ _________ _ _______ _ _________ _ _________ _ _______ _ _______ |
| 2160 ________ | 셀 _______ | 000-0000 | 팩스 _______ | 111-1111_ | ___________ | ________ |
| 2161 ________ | 셀 _______ | 222-2222 | 팩스 _______ | 333-3333 | ___________ | ________ |
| 2163 ________ | 홈 _____ | 444-4444 | 팩스 _______ | 333-3333 | ___________ | ________ |


은 내가 동적으로 컬럼에 내 행을 바꾸어해야 알아 ...하지만 난 꽤 내 SQL을 알아낼 수 없습니다. 어떤 제안?

+0

RDMS에 태그를 지정하십시오. 두 가지 SQL 방언이 동일하지 않습니다. – Parfait

답변

0

나는 당신이 앞을 잠그고있는 것 같아요?

WITH Result AS (
    SELECT 
     WPAN8, 
     WPPHTP, 
     WPPH1 'Phone Number', 
     ROW_NUMBER() OVER (PARTITION BY WPAN8, ORDER BY WPPHTP,WPPH1) AS CallRowNumber 
    FROM ABC.F0101 
    JOIN ABC.F0115 ON WPAN8=ABAN8 
    WHERE ABAT1='AR'; 
) 
SELECT 
    WPAN8 'Address Book#', 
    Resutl1.WPPHTP AS 'Phone Type1', 
    Resutl1.WPPH1 'Phone Number1', 
    Resutl2.WPPHTP AS 'Phone Type2', 
    Resutl2.WPPH1 'Phone Number2', 
    Resutl3.WPPHTP AS 'Phone Type3', 
    Resutl3.WPPH1 'Phone Number3', 
FROM ABC.F0101 
LEFT JOIN Result AS Resutl1 ON Resutl1.WPAN8=ABAN8 AND CallRowNumber = 1 
LEFT JOIN Result AS Resutl2 ON Resutl2.WPAN8=ABAN8 AND CallRowNumber = 2 
LEFT JOIN Result AS Resutl3 ON Resutl3.WPAN8=ABAN8 AND CallRowNumber = 3 

어떤 SQL 구문을 사용했는지 알지 못하기 때문에 SQL Server (TSQL)로 작성했습니다.