多列转一行

select A,STUFF ((select ' ,'+B+': '+Convert(varchar(20),Convert(int,C))+
' '+D+' * '+Convert(varchar(20),Convert(int,E))+' '+F
from G as tb01
where tb01.A=tb02.A for xml path('')),1,2,'') as H
from I as tb02
where tb02.A in ('A','B','C')
group by tb02.A

上面的方法仅用于 MSSQL 2005 或以上

目前的项目需求是 mssql 2000 且要求去掉重复项 使用如下代码搞定

/*  
-- 合并多列到一行 加入去重功能 MSSQL  
*/  
CREATE FUNCTION STUFF(@i int,@field1 varchar(2000),@field2 varchar(2000))  
RETURNS varchar(8000)  
AS  
BEGIN  
    DECLARE @values varchar(8000)  
    SET @values = ''  
    if @i=1 -- 这里只能固定的 1 是求 位置 和 2 是求 备注 和  
  SELECT @values = @values + ',' + InLocation FROM table WHERE WorkID=@field1 and SheetNo=@field2 Group by WorkID,SheetNo,InLocation
    else  
  SELECT @values = @values + ',' + Remark FROM table WHERE WorkID=@field1 and SheetNo=@field2 Group by WorkID,SheetNo,Remark 
    RETURN STUFF(@values, 1, 1, '')  
END

 

转载于:https://www.cnblogs.com/z5337/p/4120455.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值