码迷,mamicode.com
首页 > 数据库 > 详细

SQL开发技巧:开发技巧

时间:2017-12-18 18:55:01      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:sql开发   数据   rem   bst   concat   语句   col   mon   create   

 

一、行列转换

  基本思路:

    1. 将数据转转为标书数据,如图所示

      技术分享图片

    2. 使用笛卡尔积做行列转换

select 
    sum(case when childr=餐饮 then money end ) as 餐饮 , 
    sum(case when childr=通讯 then money end ) as 通讯 ,
    sum(case when childr=娱乐 then money end ) as 娱乐 
from 
    (select childr, convert(sum(money), decimal(10,2)) as money from wx_spend  group by childr) tmp;

一、单列转多行转换

原数据样式

  技术分享图片

      处理后数据样式

        技术分享图片

    SQL语句

CREATE TABLE tmp_sequence (id INT PRIMARY KEY AUTO_INCREMENT);
INSERT INTO tmp_sequence VALUES(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),(),();

SELECT 
    name, REPLACE(SUBSTRING(SUBSTRING_INDEX(courseinfo, ,, a.id), CHAR_LENGTH(SUBSTRING_INDEX(courseinfo, ,, a.id-1)) + 1), , ,‘‘) AS courseinfo
FROM 
    tmp_sequence a 
CROSS JOIN 
    (SELECT name, concat(courseinfo,",") AS courseinfo, LENGTH(courseinfo) - LENGTH(REPLACE(courseinfo, ,, ‘‘)) + 1 AS size FROM W_SalesCoursePackageInfo LIMIT 1,1) b
ON a.id <= b.size

 

SQL开发技巧:开发技巧

标签:sql开发   数据   rem   bst   concat   语句   col   mon   create   

原文地址:http://www.cnblogs.com/onlycat/p/8057623.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!