【发布时间】:2017-08-10 03:20:47
【问题描述】:
我正在尝试创建一个SELECT 查询,它允许我将联系人的多个电话号码组合到单独的列中。
例如,我想要以下
Email | Phone | ID |
------------------------|
x@x.com| 555-5555| 001 |
x@x.com| 555-5556| 001 |
改为:
Email | Phone | Phone2 | Phone3 | ID |
--------------------------------------------|
x@x.com| 555-5555| 555-5556 | NULL | 001 |
虽然这可能是不好的做法,但严格来说,我可以将结果导出为 CSV,以便将该数据上传到 CRM 系统中,该系统在导入时不允许任何重复。我已经查看了所有内容,似乎找不到处理电话号码的答案,因为MIN 和MAX 只允许两个而不是更多。
最复杂的部分是数据库的结构,并且很可能涉及复杂的查询。这是我到目前为止尝试过的,但只能得到 2 个数字,我需要剩余的列(请记住,我不是 SQL 人):
SELECT DISTINCT
C.CONTACTID,
MAX(T.NUMBERVALUE) AS Phone1,
MIN(T.numbervalue) AS Phone2
FROM TBL_PHONE T
JOIN TBL_CONTACT C ON C.CONTACTID = T.CONTACTID
JOIN TBL_EMAIL E ON E.CONTACTID = C.CONTACTID
WHERE T.NUMBERVALUE IS NOT NULL
AND LEN(T.NUMBERVALUE) > 0
GROUP BY C.CONTACTID;
【问题讨论】:
-
枢轴或动态枢轴取决于您期望有多少个电话号码?
-
可以在这里看到类似的用法stackoverflow.com/questions/10715004/…
-
哇你们真快!我预计总共只有 3 个电话号码。我会调查的。非常感谢你的速度!
标签: sql sql-server