字段拼接二:使用转置
来源:互联网 发布:网络诈骗常见形式 编辑:程序博客网 时间:2024/06/10 09:23
前段时间写了个帖子,主题为使用FOR XML PATH实现字段拼接,传送门如下:http://blog.csdn.net/weixin_38357227/article/details/78460857
最近看书学习时,发现另一种实现字段拼接的方法,即利用转置。
表结构如下:
declare @s table(groupid varchar(10) not null,memberid int not null,string varchar(10) not null,val int not null,primary key(groupid,memberid))insert into @s(groupid ,memberid,string,val) values('a',3,'stra1',6),('a',9,'stra2',7),('b',2,'strb1',3),('b',4,'strb2',7),('b',5,'strb3',3),('b',9,'strb4',11),('c',3,'strc1',8),('c',7,'strc2',10),('c',9,'strc3',12)
groupid memberid string val
a 3 stra1 6
a 9 stra2 7
b 2 strb1 3
b 4 strb2 7
b 5 strb3 3
b 9 strb4 11
c 3 strc1 8
c 7 strc2 10
c 9 strc3 12
首先要对参与聚合计算的值进行旋转,当他们全部位于同一列时,就可以在各列之间进行线性运算。注意,除非组中有一列包含序列值,否则需要先计算出行号,以标识元素在组中的位置。
select * from (select groupid,string,row_number() over(partition by groupid order by memberid ) as rnfrom @s) as d pivot(max(string) for rn in ([1],[2],[3],[4])) as p
结果如下:
进行字符串连接:
select groupid,[1]+coalesce(','+[2],'')+coalesce(','+[3],'') +coalesce(','+[4],'') as string from (select groupid,string,row_number() over(partition by groupid order by memberid ) as rnfrom @s) as d pivot(max(string) for rn in ([1],[2],[3],[4])) as p
阅读全文
0 0
- 字段拼接二:使用转置
- MySQL 使用concat函数拼接字段
- 字符转时间,格式化时间,字段连接,字段拼接
- mybatis mapper使用字段使用in 查询sql语句拼接
- oracle拼接字段和group by的使用
- SQL中使用FOR XML PATH对字段进行拼接
- 使用awk拼接字段时部分中文乱码问题
- 字符串字段拼接示例
- sqlserver 字段拼接
- oracle字段拼接
- oracle字段拼接
- oracle字段拼接
- Oracle 字段拼接
- MySQL字段拼接查询
- concat字段拼接
- oracle字段拼接
- oracle拼接字段
- Access 字段拼接
- BOM(Browser Object Model)
- 集线器(HUB),交换机(Switch),路由器
- JAXB 将xml转对象以及处理对象中的集合
- 暴力破解算法——寻找密码(递归方法)
- SIFT算法中概念简单解释
- 字段拼接二:使用转置
- Codeforces Round #447 (Div. 2) C. Marco and GCD Sequence(构造,思路)
- AWS正式把KVM投入使用 你需要知道些什么?
- SQL Loader的使用详解
- 常用库函数的学习
- 【OpenCV入门教程之五】 分离颜色通道&多通道图像混合
- Spring Web MVC系统学习笔记
- Spring mvc使用@InitBinder标签对表单数据绑定
- 虾米音乐mac端应用代码注释惊现“穷逼vip”,是程序员干的