SQL中根据相同ID重组多条数据内容

原创
小哥 3年前 (2022-11-16) 阅读数 81 #大杂烩

处理前

(第一种方法使用标量值函数)

--新建标量值函数

ALTER function [dbo].[r](@P_ID int )

returns varchar(100)

as

begin 

 declare @s varchar(100)

 select @s=isnull(@s+,,)+rtrim(面料纹理) FROM NewLiningDocument WHERE P_ID = @P_ID

 return @s

end;

--根据相同ID把多行信息,合并和一条信息

SELECT ID,dbo.r(P_ID) AS 面料纹理 FROM NewLiningDocument GROUP BY P_ID

(第二种方法直接处理)

SELECT P_ID,内容 = STUFF(

            (SELECT ,+rtrim(面料纹理) FROM NewLiningDocument WHERE st.P_ID = P_ID ORDER BY ID FOR XML PATH()

    ),1,1,

) 

FROM NewLiningDocument st GROUP BY P_ID

--(注:STUFF是将拼接完成后字符第一个,替换成)(第一个参数为要操作的字符串,第二个为从第几个开始替换下标从1开始,第三个参数为替换的个数,第四个参数为替换的字符)
--简单说明:select STUFF(abc,1,1,*) 执行结果为:*abc
--         select STUFF(abc,1,0,*) 执行结果为:*bc
--         select STUFF(abc,2,2,*) 执行结果为:a**

处理后

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除