将一个字段的多个记录值合在一行
a b c
a b c1
a b c2
a b c3
a b c1
a b c2
a b c3
--定义函数
create function getstr(@id nvarchar(50))
returns Nvarchar(4000)
as
begin
declare @str Nvarchar(2000)
-- 给 @str赋值
set @str=N''
select @str=@str+rtrim(c)+N',' from temp
where a=@id
--判断是否为空
if @str <> N''
set @str=left(@str,len(@str)-1)
return @str
end
GO
--调用 函数
select a,dbo.getstr(a) from temp group by a
其他方法:
--使用Pivot select cycleName,sum(a),sum(b),sum(c),sum(d) from (select * from [SM_MonitorEvent] pivot ( count(eventType) for eventType in (a,b,c,d) )tab ) a group by cycleName --使用sum select cycleName, sum(case EventType when 'a' then 1 else 0 end) a, sum(case EventType when 'b' then 1 else 0 end) b, sum(case EventType when 'c' then 1 else 0 end) c, sum(case EventType when 'd' then 1 else 0 end) d from [SM_MonitorEvent] group by cycleName
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步