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

How to put sql result into single cell

我在简化的平台中 sql 编码,无法访问平台代码,因此我时不时需要一些解决方法(并不总是最佳实践代码)。

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

例如: Table 个产品有 productID, productName, packages.

Table 变体有 productID, packageID.

变体的示例数据:

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

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

仅使用 sql 是否可以做到这一点?

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

您可以将 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

从 SQL 服务器 vNext 开始,您可以:

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

在以前的版本中,您要么使用 cursors/xml 破解方法,要么使用 CLR 聚合函数。