2017-01-09 5 views
0



1.アドレス帳情報を含む2つのテーブルを結合します。

2.「電話番号エリアコード」と「電話番号」を連結します

3.列1の「アドレス帳#」が繰り返されている場合は、情報が同じ行に表示されます(以下の例を参照)。SQLで行を列に動的に転記するにはどうすればよいですか?

表1のフィールド(ABC_F0115):
'アドレス帳#'
'電話タイプ'
の電話エリアをここ


は、私が使用していますテーブルやフィールドがありますコード '
「電話番号」

表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'; 



それは1に似た表を戻します以下:


|アドレス帳#| PhoneType | PhoneAreaCode |電話番号|
| ___________ _ _________ _ _____________ _ ___________ |
| 2160 ________ |セル______ | 000 __________ | 000-0000 _____ |
| 2160 ________ | Fax______ | 111 __________ | 111-1111 ______ |
| 2161 ________ |セル______ | 222 __________ | 222-2222 _____ |
| 2161 ________ | Fax______ | 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にタグを付けてください。 2つの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)を使用して作成しました。

関連する問題