考虑一个包含多行和多列的数据库表: 按salesid分组
salesid mrp sku type
1 20 58pl pending
1 25 58po Delivered
2 70 32pf Dispatched
3 85 24jh Pendig
2 58 32pg Delivered
我想要什么:
salesid mrp sku type
1 20,25 58pl,58po Pendig,Delivered
2 70,58 32pf,32pg Dispatched,Delivered
3 85 24jh Pendig
我正在使用Visual Studio 2017 C#和数据库MSSQL 2017
我尝试了什么:
select distinct p.[salesid],
STUFF((SELECT distinct ', ' + t1.type
from payment_trans t1
where p.[salesid] = t1.[salesid]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,2,'') type
,
STUFF((SELECT distinct ', ' + t2.Merchant_SKU
from payment_trans t2
where p.[salesid] = t2.[salesid]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,2,'') sku
,
STUFF((SELECT distinct ', ' + t3.stockupId
from payment_trans t3
where p.[salesid] = t3.[salesid]
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,2,'') stockupid
from payment_trans p where p.stockupId!=-1
它给我一个错误:(SQL错误(245):将varchar值','转换为数据类型int时转换失败。) 当我分隔整数值时
答案 0 :(得分:0)
t1.type,t2.Merchant_SKU或t3.stockupId是整数,需要在连接它们之前将其强制转换为varchar。
或者只需将','和带有“,”的列分开,然后让FOR XML执行转换。