我在简化的平台上编写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是自定义编码的,并不广为人知。
答案 0 :(得分:1)
您可以将STUFF
与FOR 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聚合函数。