SQL视图 - 将多行合并为一行

时间:2011-10-03 01:43:48

标签: sql-server

我正在尝试使用MSSql 2008中的三个表创建一个新视图: 表1包含客户ID和交易ID 表1

CustomerID      TransactionID   
1                        1
1                        2

表2包含采购交易和产品ID

TransactionID    ProductID 
1                     x
2                     y

表3包含产品名称

ProductID   Name  
1            x
2            y

我认为我想要显示

CustomerID  Product Name
1              x, y

当我使用以下查询时:

SELECT     table1. CustomerID, table3.Name 

FROM         table1 LEFT OUTER JOIN
                      Table2 ON table2. TransactionID    = table1.VisitId LEFT OUTER JOIN
                      Table3 ON table2. ProductID  = Table3. ProductID 

                      GROUP BY table1. CustomerID, table3.Name

我得到了

CustomerID  Product Name
1           x
1           y

先谢谢

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用用户定义的函数,例如:

SELECT table1.CustomerID, dbo.BuildStringOfCustomerProductNames(table1.CustomerID)
FROM table1

并创建一个用户定义的函数,如:dbo.BuildStringOfCustomerProductNames 以customerid作为输入。 在那里,你可以运行一个查询循环遍历表2和表3连接记录来创建一个字符串,然后返回。

我无法想到其他任何简单的方法。