ms sql 多行記錄合併成一個字符串或多字段(行轉列)

--將COPTN表中TN12字段的內容,可能多條記錄,合併成一個字符串
declare @tg varchar(250),@ct int

--計算需要合併記錄的數量並保存在@tc變量中,並初始化@tg
select @ct=count(a.TN012),@tg='' from  (
    select TN012 from COPTN
        where TN001+TN002 in (
            select TH045+TH046 from COPTH
            where TH001+TH002 in ('2313100626003')
        )
    ) a

while @ct>0 begin --@ct作為計數號,等於0時停止查詢
    select @tg=@tg+' / '+b.TN012 from ( --TN012內容之間用' / '分開
        select row_number() over(order by TN002)  RID,TN012 from COPTN 

                --row_number() over(order by TN002)  RID 將符合條件的記錄按TN002字段排序並編號,作為字段RID加到返回的結果中
            where TN001+TN002 in (
                select TH045+TH046 from COPTH
                where TH001+TH002 in ('2313100626003')
            )
        ) b
    where b.RID=@ct --每次只返回記一條錄號RID等於@ct的記錄
    select @ct=@ct-1 --完成一條查詢後@ct計數減1,
end

select @tg=substring(@tg,4,250) --去掉分隔符' / '
select @tg


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值