sql 行转列,总结分析
来源:互联网 发布:软件开发需求文档 编辑:程序博客网 时间:2024/06/05 15:23
合并行 ,行转列
SELECT * FROM test.`dd`;
output:id verdor_id x y z date------ --------- ------ ------ ------ ------------ 1 A 11 789 24 2016-06-23 2 B 1 11 28 2016-06-23 3 B 1 11 28 2016-06-22 4 B 1 11 28 2016-06-21 5 A 11 789 24 2016-06-22
# 合并行 ,行转列SELECTdd.`date`,MAX(CASE WHEN verdor_id = 'A' THEN dd.`x` ELSE 0 END) 'A_vendor_x',MAX(CASE WHEN verdor_id = 'B' THEN dd.`x` ELSE 0 END) 'B_verdor_x',MAX(CASE WHEN verdor_id = 'A' THEN dd.`y` ELSE 0 END) 'A_vendor_y',MAX(CASE WHEN verdor_id = 'B' THEN dd.`y` ELSE 0 END) 'B_verdor_y',MAX(CASE WHEN verdor_id = 'A' THEN dd.`z` ELSE 0 END) 'A_vendor_z',MAX(CASE WHEN verdor_id = 'B' THEN dd.`z` ELSE 0 END) 'B_verdor_z'FROM `dd`GROUP BY dd.`date`
output:date A_vendor_x B_verdor_x A_vendor_y B_verdor_y A_vendor_z B_verdor_z---------- ---------- ---------- ---------- ---------- ---------- ------------2016-06-21 0 1 0 11 0 282016-06-22 11 1 789 11 24 282016-06-23 11 1 789 11 24 28
如何理解上面这条 sql 是如何工作的?
首先:
SELECTdd.`date`,CASE WHEN verdor_id = 'A' THEN dd.`x` ELSE 0 END 'A_vendor_x',CASE WHEN verdor_id = 'B' THEN dd.`x` ELSE 0 END 'B_verdor_x',CASE WHEN verdor_id = 'A' THEN dd.`y` ELSE 0 END 'A_vendor_y',CASE WHEN verdor_id = 'B' THEN dd.`y` ELSE 0 END 'B_verdor_y',CASE WHEN verdor_id = 'A' THEN dd.`z` ELSE 0 END 'A_vendor_z',CASE WHEN verdor_id = 'B' THEN dd.`z` ELSE 0 END 'B_verdor_z'FROM `dd`
output:date A_vendor_x B_verdor_x A_vendor_y B_verdor_y A_vendor_z B_verdor_z---------- ---------- ---------- ---------- ---------- ---------- ------------2016-06-23 11 0 789 0 24 02016-06-23 0 1 0 11 0 282016-06-22 0 1 0 11 0 282016-06-21 0 1 0 11 0 282016-06-22 11 0 789 0 24 0
然后,通过 max + group by 去掉 0 即当初未匹配到的情况。
0 0
- sql 行转列,总结分析
- ORACLE SQL分析函数总结
- sql 主体总结 及 mysql 实例分析
- 噪声分析系统统计sql总结
- SQL 数据库语言分析总结(一)
- SQL 数据库语言分析总结(二)
- SQL 数据库语言分析总结(三)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 通过分析SQL语句的执行计划优化SQL(总结)
- 用babel将es6转换成es5
- caffe net visualization
- mysql case语句的使用
- fLNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决方案
- Win下Solr5.3从数据库中读取索引
- sql 行转列,总结分析
- 读取文本文件中文每一行并存储到txt
- H-Index leetcode
- POJ - 1723 Soldiers 士兵站队 排序+中位数
- LeetCode Perfect Squares(动态规划)
- R语言异常值处理方法总结
- 用Java访问带有Kerberos认证的HBase
- hihocoder1039:字符串
- Android将应用log信息保存文件