假设我有一个包含这样的列的表:
| Name | Cat_id |
我不记得可以像这样构建varchar的函数
1,24|4,56|5,67
其中逗号前面的数字是Cat_id
,逗号后面的数字是带有该ID的行数。有什么想法吗?
答案 0 :(得分:3)
这可以解决问题:
declare @s varchar(8000)
set @s = ''
select @s = @s + cast(cat_id as varchar(20)) + ',' + cast(count(*) as varchar(20)) + '|'
from SomeTable
group by cat_id
option(maxdop 1) -- this sure there are no funny side-effects because of parallelism
print @s
或者你可以使用'for xml'或游标,但这应该更快。
关心GJ
答案 1 :(得分:0)
希望这会有所帮助(sql server 2005 +)...我没有测试该程序,因为我目前没有SQL Server
With Cte1 As(
Select Cat_ID, Count(Cat_ID),Cast(Cat_ID as Varchar) + Cast(Count(Cat_ID)) as MergedColumn from tbl
group by Cat_ID),
cte2 as(
Select
Cat_ID
, mergedData = stuff((Select cast(MergedColumn + '|' as varchar) from tbl t2 where t2.Cat_ID = t1.Cat_ID
for xml path('')),1,1,'')
from tbl t1)
select mergedData from Cte2