apply用法(2)——字符串拆分转列

介绍一种apply更有意思的用法。

table TT 表结构如下
client    gift   
1000      礼品A,礼品B,礼品C,
1200      礼品A,礼品D,
1500      礼品C,
...       ...

发现这种表结构对于统计消费者整体的礼品偏好十分不友好。理想的表结构应该是这样的:

client    gift 
1000    礼品A
1000    礼品B
1000    礼品C
1200    礼品A
1200    礼品D
1500    礼品C
... ...

可以这样实现: 

text_spilt是表值函数,作用是将字符串拆分成一列。详细了解可以看下我的  将特定字符分割字符串转成列输出
select client,spilts as gift from TT as tt 
cross apply (select spilts from text_spilt(tt.gift,','))t

结果为
client    gift 
1000    礼品A
1000    礼品B
1000    礼品C
1200    礼品A
1200    礼品D
1500    礼品C

 

posted @ 2020-08-14 09:00  大威1030  阅读(238)  评论(0)    收藏  举报