SQL 将一个表中的多行插入到另一个表的列中

标签 sql sql-server tsql

我们有一个公司详细信息表和另一个链接到这些公司的联系人表,因此每个公司可以有多个联系人。有人要检查联系人表并将每个公司的联系人减少到 2 个。

然后他们需要创建一个公司详细信息表,将联系人表中的每个联系人添加到列的末尾,例如[Contact1Name]、[Contact1Tel]、[Contact2Name]、[Contact2Tel]。

为了让他们将所有信息都放在一个表格/电子表格中,有没有办法通过 tsql 自动执行此操作,还是必须手动完成?

每个联系人都通过公司 ID 列链接到公司。

感谢您的帮助。

最佳答案

您可以像这样提取数据:

WITH idList AS
(
    SELECT CompanyID, 
           MIN(ContactID) as id1,
           MAX(ContactId) as id2 
    FROM Contact GROUP BY CompanyID
)
SELECT c.*,c1.*,c2.*
FROM Company c 
INNER JOIN idList ON c.CompanyID = idList.CompanyID
INNER JOIN Contact c1 ON c1.ContactId = idList.id1
INNER JOIN Contact c2 ON c2.ContactId = idList.id2

您将获得公司数据(c)和两个联系人(c1 和 c2)的数据

关于SQL 将一个表中的多行插入到另一个表的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20283567/

相关文章:

sql - 使用 SQL Server FILESTREAM GUID 作为主键

c# - 将大型 SQL 查询移至 Excel

sql - 在SSIS中的foreach循环中评估带有空格的excel工作表名称

sql-server - 存储过程和函数

sql - 使用 MAX() 更新 TSQL

sql-server - 需要根据列中的值生成 n 行

mysql - 按列分组计算的列

MYSQL ERROR 1248 我卡住了

sql - ORACLE 左外连接问题(空表?)

c# - SQL Server 中的 EncryptByPassPhrase 和 C# 中的 Triple DES 解密