sql server数据库 字符拆分 outer apply和 cross apply 表值函数和标量值函数

经常 多行变一行 合并for xml path 去汇总。

有时候 遇见 多选的情况 在统计的时候需要拆分出来。怎么办?  接下来讲解 xml 用法,

选择数量
1,250
330

 

 SELECT  数量,选择= CONVERT(xml,'<root><v>' + REPLACE(选择, ',', '</v><v>') + '</v></root>') FROM  tb 

选择数量
<root><v>1</v><v>2</v></root>50
<root><v>3</v></root>30

                          然后

                        select * from tb2  A OUTER APPLY
                            (
                              SELECT TypeCode = N.v.value('.', 'varchar(100)') FROM A.选择.nodes('/root/v') N(v)
                            ) B

 

选择数量TypeCode
<root><v>1</v><v>2</v></root>501
<root><v>1</v><v>2</v></root>502
<root><v>3</v></root>303

 

之后就可以根据 typecode 去分组求和了 

如果说 拆分选择 还要拆分数量 如下 怎么办? 暂未解决

选择数量TypeCode
<root><v>1</v><v>2</v></root>251
<root><v>1</v><v>2</v></root>252
<root><v>3</v></root>303

 

如果是 不拆分就想找一下 选择里面有1的 数量  那么就用  

where CHARINDEX(','+'1'+',' , ','+选择+',') > 0   直接筛选出来有1的  那么 1,3 会找出来  1,2也会找出来

 

(Sql Server)数据的拆分和合并

https://www.cnblogs.com/fang-beny/archive/2013/08/13/3255171.html

 

https://www.cnblogs.com/baili-luoyun/p/11212691.html

sqlserver模仿mysql函数FIND_IN_SET,group_concat的功能

https://blog.51cto.com/snowtiger/1929498

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值