sqlserver 同列字符连接相加

sqlserver 同列字符连接相加,第1张

概述-- drop table #tbcreate table #tb(姓名 varchar(10) , 课程 varchar(10) , 分数 int) insert into #tb values('张三' , '语文' , 74) insert into #tb values('张三' , '数学' , 83) insert into #tb values('李四'



--	drop table #tbcreate table #tb(姓名 varchar(10),课程 varchar(10),分数 int)    insert into #tb values('张三','语文',74)    insert into #tb values('张三','数学',83)    insert into #tb values('李四',74)    insert into #tb values('李四',84)    insert into #tb values('李四','物理',94)    select stuff('语文',1,'数学') --数学语文 select 课程 from #tb for xml path('') --<课程>语文</课程><课程>数学</课程><课程>语文</课程><课程>数学</课程><课程>物理</课程>SELECT 课程+'/' FROM #tb B FOR XML PATH('')--语文/数学/语文/数学/物理/SELECT 姓名,(SELECT 课程+'/' FROM #tb B WHERE A.姓名=B.姓名 FOR XML PATH('')) AS 课程FROM #tb A/*张三	语文/数学/张三	语文/数学/李四	语文/数学/物理/李四	语文/数学/物理/李四	语文/数学/物理/*/SELECT 姓名,RIGHT(课程,LEN(课程)-1) 课程,RIGHT(分数,LEN(分数)-1) 分数FROM (	SELECT distinct 姓名,(SELECT '/'+课程 FROM #tb B WHERE A.姓名=B.姓名 FOR XML PATH('')) AS 课程,(SELECT '/'+convert(VARCHAR(10),分数) FROM #tb B WHERE A.姓名=B.姓名 FOR XML PATH('')) AS 分数	FROM #tb A) KK--或select  姓名,选择课程=stuff((select ','+课程 from #tb where 姓名=t.姓名 for xml path('')),''),分数=stuff((select ','+convert(VARCHAR(10),分数) from #tb where 姓名=t.姓名 for xml path('')),'')  from #tb t    group by 姓名    /*   姓名       选择课程           分数---------- -----------------  -------------------   李四	   语文,数学,物理	  74,84,94张三	   语文,数学	      74,83     (2 行受影响)       */        




CREATE FUNCTION dbo.fn_getStr(@name VARCHAR(20))RETURNS varchar(8000)ASBEGIN    DECLARE @r varchar(8000)    SET @r = ''    SELECT @r = @r + (CASE WHEN ISNulL(课程,'')='' THEN '' ELSE ','+ISNulL(课程,'') END)    FROM tb    WHERE 姓名=@name     RETURN STUFF(@r,'')ENDGO SELECT 姓名,dbo.fn_getStr(姓名) AS 课程 FROM tb GROUP BY 姓名/*姓名         课程---------- -------------------李四         语文,数学,物理张三         语文,数学(2 行受影响)*/
总结

以上是内存溢出为你收集整理的sqlserver 同列字符连接相加全部内容,希望文章能够帮你解决sqlserver 同列字符连接相加所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1175324.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存