给你一个简要的总结 - 我想:
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