在查询中行到字段级别?

时间:2010-10-25 16:03:21

标签: sql sql-server tsql

使用SQL 2005,我试图在我的数据库中的Orders表上运行查询。每个订单都可以有多个“评论”。

我希望获得单个订单记录,并将所有注释放在一个字段中。

以下是我正在尝试做的伪代码:

SELECT 
Orders.Name, 
Orders.Date,
(SELECT Comment += Comment FROM OrderComments WHERE OrderComments.OrderId = Orders.OrderId)
FROM Orders

我希望订单评论最终成为我的查询中的一个字段,并且能够通过日期和逗号之类的内容来分隔结果行。有没有办法将子查询中的结果行合并到一个字段中?

所以,如果有:

**Orders:**
Order Id(int): 1
Order Name(varchar): First Order

**OrderComments:**
OrderId(int): 1
Comment(text): First order, yay

OrderId(int): 1
Comment(text): Just a random comment

我想最终得到一个像这样的行(在这种情况下是一个分号分隔符): “First Order”,“10/25/2010”,“First order,yay;只是随机评论”。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

用于xml:

SELECT 
Orders.Name, 
Orders.Date,
(SELECT Comment +', ' FROM OrderComments WHERE OrderComments.OrderId = Orders.OrderId FOR XML PATH(''))
FROM Orders