合并列值和分析列值

合并列值:
在sqlserver2000中可以用函数实现
sqserver 2005
declare  @tb table(id int, value varchar(10))
insert into @tb values(1, 'aa')
insert into @tb values(1, 'bb')
insert into @tb values(2, 'aaa')
insert into @tb values(2, 'bbb')
insert into @tb values(2, 'ccc')

-- 查询处理
SELECT * FROM(SELECT DISTINCT id FROM @tb)A OUTER APPLY(
        SELECT [values]= STUFF(REPLACE(REPLACE(
            (
                SELECT value FROM @tb N
                WHERE id = A.id
                FOR XML AUTO
            ), '<N value="', ','), '"/>', ''), 1, 1, '')
)N

分析列值
declare  @tb table(id int,value varchar(30))
insert into @tb values(1,'aa,bb')
insert into @tb values(2,'aaa,bbb,ccc')

SELECT A.id, B.value
FROM(
    SELECT id, [value] = CONVERT(xml,' <root> <v>' + REPLACE([value], ',', ' </v> <v>') + ' </v> </root>') FROM @tb
)A
OUTER APPLY(
    SELECT value = N.s.value('.', 'varchar(100)') FROM A.[value].nodes('/root/v') N(s)
)B
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值