SQL 连接多行到单行

标签 sql sql-server-2008

我正在努力按照我需要的方式进行连接,我有两个表来存放我需要链接的数据(只是为了清楚起见)。一张表保存呼出调用数据、调用的号码、持续时间等。另一个表保存了调用的人的联系方式。设定如下:

CustID | Number 1  | Number 2 | Number 3  | Number 4
    1  | 072454584 |          | 017726593 | 
    2  |           |0125456852|           | 0125785448

因此,如果我们想调用客户 1,我们会尝试两个号码,但只有一个接通。

我需要做的是将调用的号码加入到客户记录中,以便比较每个号码直到匹配(希望这是有意义的)。我尝试过 case when 语句,但没有成功。这样做的最佳方法是什么?!?!

最佳答案

我可能会采用这种方法进行查询。

with myphones
AS
(
    SELECT CustomerId, Phone1 As Phone FROM ContactDetails
    UNION
    SELECT CustomerId, Phone2 As Phone FROM ContactDetails
    UNION
    SELECT CustomerId, Phone3 As Phone FROM ContactDetails
    UNION
    SELECT CustomerId, Phone4 As Phone FROM ContactDetails
)
SELECT p.CustomerId, p.Phone, oc.*
FROM myphones p 
    INNER JOIN outboundcalls oc ON p.Phone = oc.Phone

关于SQL 连接多行到单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289678/

相关文章:

sql - 更改 SQL Server 2008 恢复模式

.net - 如何将.NET DateTimeOffset转换为Sql2008 DateTimeOffset

Python数据库连接和结果集转换为字符串

sql - 我可以缩短这个 SQL 查询吗?

sql - PostgreSQL CASE 语句

c# - Entity Framework 中的准备语句

java - 如何在 JDBC 中获取插入 ID?

SQL View 或表

c++ - 使用 C++ 从文件填充数据库

sql - 如何在go lang中测试事务回滚和提交