給你一個簡要的總結 - 我想:
1.加入兩張表,包含地址簿信息,
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';
它返回一個類似於表如下:
|地址簿#| PhoneType | PhoneAreaCode |電話號碼|
| ___________ _ _________ _ _____________ _ ___________ |
| 2160 ________ |細胞______ | 000 __________ | 000-0000 _____ |
| 2160 ________ | Fax______ | 111 __________ | 111-1111 ______ |
| 2161 ________ |細胞______ | 222 __________ | 222-2222 _____ |
| 2161 ________ | Fax______ | 333 __________ | 333-3333 _____ |
| 2162 ________ | Home____ | 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。有什麼建議麼?
請標註RDMS。沒有兩種SQL方言是相同的。 – Parfait