SQL行列转置
建业森林半岛 210 100 30 80
万科城 200 50 60 90
丰乐园 210 30 70 110
车类型 总数 建业森林半岛 万科城 丰乐园
A类车 180 100 50 30
B类车 160 30 60 70
C类车 280 80 90 110
CREATE TABLE `myc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`housing` varchar(50) CHARACTER SET latin1 DEFAULT NULL,
`all_car` int(11) DEFAULT NULL,
`a_car` int(11) DEFAULT NULL,
`b_car` int(11) DEFAULT NULL,
`c_car` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of myc
-- ----------------------------
INSERT INTO `myc` VALUES ('1', 'senlinbandao', '210', '100', '30', '80');
INSERT INTO `myc` VALUES ('2', 'wanke', '200', '50', '60', '90');
INSERT INTO `myc` VALUES ('3', 'fengle', '210', '30', '70', '110');
id housing all_car a_car b_car c_car
1 senlinbandao 210 100 30 80
2 wanke 200 50 60 90
3 fengle 210 30 70 110
SELECT c2 AS '车类型', IF(c2='A类车',(SELECT SUM(a_car) FROM MYC),IF(c2='B类车',(SELECT SUM(b_car) FROM MYC),IF(c2='C类车',(SELECT SUM(c_car) FROM MYC),0))) AS '总数', SUM(IF(c1='senlinbandao',c3,0)) AS '建业森林半岛', SUM(IF(c1='wanke',c3,0)) AS '万科城', SUM(IF(c1='fengle',c3,0)) AS '丰乐园'
from( select housing as c1,'A类车' as c2,a_car as c3 from MYC
Union select housing,'B类车' as c2,b_car from MYC Union select housing,'C类车' as c2,c_car from MYC
) AS tx group by c2;
第二种写法
SELECT
'a_car' 车类型,
MAX(CASE housing WHEN 'senlinbandao' THEN a_car ELSE 0 END ) 建业森林半岛,
MAX(CASE housing WHEN 'wanke' THEN a_car ELSE 0 END ) 万科城 ,
MAX(CASE housing WHEN 'fengle' THEN a_car ELSE 0 END ) 丰乐园,
SUM(a_car) 总数
FROM myc
UNION
SELECT
'b_car' 车类型,
MAX(CASE housing WHEN 'senlinbandao' THEN b_car ELSE 0 END ) 建业森林半岛,
MAX(CASE housing WHEN 'wanke' THEN b_car ELSE 0 END ) 万科城 ,
MAX(CASE housing WHEN 'fengle' THEN b_car ELSE 0 END ) 丰乐园,
SUM(b_car) 总数
FROM myc
UNION
SELECT
'b_car' 车类型,
MAX(CASE housing WHEN 'senlinbandao' THEN c_car ELSE 0 END ) 建业森林半岛,
MAX(CASE housing WHEN 'wanke' THEN c_car ELSE 0 END ) 万科城 ,
MAX(CASE housing WHEN 'fengle' THEN c_car ELSE 0 END ) 丰乐园,
SUM(c_car) 总数
FROM myc
SQL行列转置的更多相关文章
- SQL 行列转置
),),[Score] int) Insert Class union all union all union all union all union all union all union all ...
- SQL 行列倒置
SQL的的行列倒置已经不是新知识了,但在博主的技术咨询期间,仍发现其实有很多人并不了解这块,所以在此专门写一篇博客记录.本文将以Mysql为例,并以数据采集指标信息获取为例子.在下面的例子,你可以在s ...
- 简化实现动态行列转置的SQL
动态行列转换的计算在实际业务中非经常见,网上各类技术论坛上都有讨论,比方以下这些问题: http://www.iteye.com/problems/87788 http://bbs.csdn.net/ ...
- 使用SQL SERVER PIVOT实现行列转置
一般我们在使用SQL语句实现行列转置时候,最常用的方法无外乎就是 case语句来实现,但是如果需要需要转置的列太多,那么case起来语句就无限庞大,十分不方便,sql server中的PIVOT就可以 ...
- SQL动态长度行列转置
一,案列问题描述: 某销售系统中,注册的用户会在随后的月份中购物下单,需要按月统计注册的用户中各个月下单的金额.源数据表如下: FM::注册月份,CM: 下单月份, AMT:下单金额 期望得到如下统计 ...
- 用powershell+excel行列转置三步走
本文重点讲解第一步,手动在excel表中输入公式,或者用powershell自动输入公式. 第二步,用powershell向excel中写入数据,略. 第三步,用powershell从excel中读取 ...
- Oracle 行列转置
两种简单的行列转置 1.固定列数的行列转换如student subject grade--------- ---------- --------student1 语文 80st ...
- 数据透视表sql:用SQL行列转换实现数据透视的一些思考
用SQL行列转换实现数据透视的一些思考 摘要:根据对报表开发过程中碰到的需要用SQL行列转换进行解决的一类查询统计问题的分析,逐步探索求解得到一种较通用的解决思路,并用函数进行实现.该解决思路及函数实 ...
- HAWQ中的行列转置
行列转置是ETL或报表系统中的常见需求,HAWQ提供的内建函数和过程语言编程功能,使行列转置操作的实现变得更为简单. 一.行转列 1. 固定列数的行转列 原始数据如下: test=# select * ...
随机推荐
- hdu 3790 最短路问题 (spfa练手)
Problem Description 给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的. Inp ...
- docker学习5--docker数据卷(volume)
https://blog.csdn.net/dream_broken/article/details/52314993 1.什么是数据卷volume 为了了解什么是Docker Volume,首先我们 ...
- 洛谷P1712 区间
题意:给你n个区间,从中选择m个,使得它们有交,且最长与最短区间的差值最小. 解:这道题我想了好多的,nlog²n错的,nlogn错的,最后终于想出nlogn的了...... 把区间按照长度排序,然后 ...
- agc031
T1 题意:给你一个串,求所有子序列个数,满足没有相同字符.1e5,2s. 解:考虑一个合法的子序列.其中每个字母的出现位置都有(出现次数)种选择.还可以不选,要 + 1. 然后乘起来就做完了.如果变 ...
- bzoj3782上学路线(Lucas+CRT+容斥DP+组合计数)
传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3782 有部分分的传送门:https://www.luogu.org/problemnew/ ...
- Linux安装 火速入门
一.基本简介 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. Linux能运行主要的UNIX工具软件.应用程序 ...
- Tomcat 用 startup.bat 启动时,加载信息之后又关闭服务器(差不多一闪而过)问题
Tomcat 用 startup.bat 启动时,加载信息之后又关闭服务器(差不多一闪而过)问题 以前是正常的,后来在 server.xml 文件的 <Host> </Host> ...
- 3D游戏的角色移动和旋转
* -----英雄的移动控制 * * * * */ using System.Collections; using System.Collections.Generic; using UnityEng ...
- WPF开发的界面调用C++生成的dll文件
以引用d1.dll为例. [生成d1.dll] 文件——新建——项目——Visual C++——Win32项目,选择DLL,点击Finish.在d1.cpp中添加代码 #include "s ...
- 原生JS实现全选和不全选
案例演示 源代码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...