如何将sql结果放入单个单元格

时间:2017-03-30 07:54:55

标签: sql sql-server string-aggregation

我在简化的平台上编写sql并且无法访问平台代码,所以我偶尔需要一些解决方法(并不总是最佳实践代码)。

我需要将select子句的结果存储到单个单元格中以供进一步使用。

例如: 表格产品有productID, productName, packages

表变体有productID, packageID

变体的示例数据:

productID - packageID
1001 - K1001
1001 - K1002
1001 - K1003

我需要以(K1001, K1002, K1003)或类似的形式将结果保存到单元格包。

这可以只使用sql吗?

我正在使用ms sql server xpress,platform / RDBMS是自定义编码的,并不广为人知。

2 个答案:

答案 0 :(得分:1)

您可以将STUFFFOR XML PATH一起使用。

<强>查询

select productID, stuff((
    select ', ' + packageID
    from your_table_name 
    where (productID = t.productID) 
    for xml path(''), type).value('(./text())[1]','varchar(max)')
    , 1, 2, '') as single_value
from your_table_name  t
group by productID;

<强> Find demo here

答案 1 :(得分:0)

从SQL Server vNext开始,您可以:

SELECT 
    STRING_AGG(productId + ' - ' + packageId, ',')
FROM yourTable

在以前的版本中,您将使用游标/ xml破解或使用CLR聚合函数。