【发布时间】:2017-05-24 05:59:01
【问题描述】:
给你一个简短的总结——我想:
1. 连接两个包含通讯簿信息的表,
2. 连接“电话号码区号”和“电话号码”(因为它们存储在我们数据库中的不同列中)
3. 如果第 1 列中的“地址簿#”重复 - 让信息出现在同一行(例如,见下文) .
以下是我正在使用的表格和字段:
表 1 (ABC_F0115) 中的字段:
‘通讯录#’
“手机类型”
‘电话区号’
“电话号码”
表 2 (ABC_F0101) 中的字段:
‘通讯录#’
‘通讯录类型’
我当前的 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';
它返回一个类似于下面的表:
|通讯录#|电话类型 |电话区号 |电话号码 |
|___________ _ _________ _ _____________ _ ___________|
|2160________|细胞______| 000__________| 000-0000_____ |
|2160________|传真______ | 111______________| 111-1111______ |
|2161________|细胞______|第222章222-2222_____ |
|2161________|传真______ |第333章333-3333_____ |
|2162________|主页____ |第444章444-4444_____ |
但是,我希望返回的表格如下所示:
|通讯录#|电话类型1 |电话#1 |电话类型2 |电话#2 |电话类型3 |电话#3 |
|___________ _ _________ _ _______ _ _________ _ _________ _ _______ _ _______ |
|2160________|细胞______| 000-0000|传真_______ |111-1111_|___________|________|
|2161________|细胞______| 222-2222|传真 _______ |333-3333 |___________|________|
|2163________|主页_____| 444-4444|传真 _______ |333-3333 |___________|________ |
我知道我必须动态地将我的行转换为列...但我无法完全弄清楚我的 SQL。有什么建议吗?
【问题讨论】:
-
请标记 RDMS。没有两种 SQL 方言是相同的。
标签: sql multiple-columns dynamic-sql transpose rdbms