2017-10-19 69 views
1

在SQL Server 2012中,当我运行:SQL服务器 - 结合行成一个字段为每个客户

SELECT Customer, Fruit 
FROM Customers_DB 

我得到以下的输出:

| Customer  | Fruit  | 
| A0001   | Apple  | 
| A0001   | Pear  | 
| A0002   | Banana | 
| A0003   | Pear  | 
| A0004   | Grape  | 
| A0004   | Apricot | 

我将如何实现以下输出,动态?

| Customer  | Fruit   | 
| A0001   | Apple + Pear | 
| A0002   | Banana   | 
| A0003   | Pear   | 
| A0004   | Apricot + Grape | 

我注意到水果被连接起来(也许Coalesce“按字母顺序d)。

+0

HTTPS:/ /stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-microsoft-sql-server-2005 –

+0

这已被问及答复数千次。 –

+0

@SeanLange然后你为什么只发布一个孤独的问题和答案? –

回答

2

可以使用的东西如下:如下

Select Customer, 
    stuff((select ' + '+Fruit from #customer_db c where c.customer = c1.customer order by Fruit for xml path('')),1,3,'') as Fruit 
from #customer_db c1 
group by customer 

输出:

+----------+-----------------+ 
| Customer |  Fruit  | 
+----------+-----------------+ 
| A0001 | Apple + Pear | 
| A0002 | Banana   | 
| A0003 | Pear   | 
| A0004 | Apricot + Grape | 
+----------+-----------------+ 

如果您正在使用SQL Server 2017年或SQL Azure的,那么你可以使用String_agg

相关问题