CREATE TABLE bill (

id CHAR(36) NOT NULL,

customer INT(255) NULL DEFAULT NULL COMMENT ‘顾客’,

shop INT(255) NULL DEFAULT NULL COMMENT ‘消费店铺’,

money DECIMAL(10,2) NULL DEFAULT NULL COMMENT ‘花费’,

type INT(255) NULL DEFAULT NULL COMMENT ‘类型 0’,

PRIMARY KEY (id)

)

COLLATE=’utf8_general_ci’

ENGINE=InnoDB

;

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘117f1a3c-ae68-42de-aa29-b9679a9a79f8’, 68, 9, 100.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘1606dd9a-5e1b-4bb6-9641-7508587aab56’, NULL, 9, 100.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘649d86ff-0271-4799-bc3c-173514f40f7c’, NULL, 9, 300.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘6d502fb6-9664-4f0f-8e2d-2fc9e21202b3’, 68, 9, 100.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘7036ba44-8143-4a5b-802f-522b39253572’, 68, 9, 100.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘7bcb427f-0eb1-4aa7-811c-997d7dffecb1’, 68, 9, 100.00, 3);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘8043bd41-54c9-43d1-bf4a-def04e744343’, 68, 16, 180.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘8fbbcc6c-fcb0-4e95-bfd6-19d2e895694f’, NULL, 9, 200.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘94fa7e96-ae4a-423e-9c18-069adf601822’, NULL, 9, 100.00, 1);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘a8388be4-3862-41ca-aa0a-867cb9c9966b’, 68, 9, 0.00, 6);

INSERT INTO bill (id, customer, shop, money, type) VALUES (‘ec6713c6-4460-44f1-8f32-d4c409571855’, 68, 9, 100.00, 1);

CREATE TABLE card_model (

id CHAR(36) NOT NULL,

name VARCHAR(255) NULL DEFAULT NULL,

shop INT(255) NULL DEFAULT NULL,

v1 DECIMAL(10,2) NULL DEFAULT NULL COMMENT ‘参数1’,

type INT(255) NULL DEFAULT NULL,

PRIMARY KEY (id)

)

COLLATE=’utf8_general_ci’

ENGINE=InnoDB

;

INSERT INTO card_model (id, name, shop, v1, type) VALUES (‘af7b7105-b3d0-4552-86a2-f187f4cbaabd’, ‘wedf’, 9, 100.00, 1);

INSERT INTO card_model (id, name, shop, v1, type) VALUES (‘d7b10362-d189-440b-9d7a-72465078c066’, ‘frm’, 9, 200.00, 2);

希望得到类似这种的。

其中type1是bill表中type=’1’的所有的money的和,其中type2是bill表中type=’2’的所有的money的和,card_model表中所有v1的数据的和全部为’card’类

首先分析:

1、按店铺分组,要分别得到他们的和

第二张图(https://img-blog.csdn.net/20150828214433916)

select IFNULL(sum(b.money),0) money,shop,’type1’ type_test from bill b where b.type=1 group by b.shop

union

select IFNULL(sum(b.money),0) money,shop,’type2’ type_test from bill b where b.type=2 group by b.shop

union

select IFNULL(sum(b.v1),0) money,shop,’card’ type_test from card_model b group by b.shop

从数据看没有type2的数据。

使用IFNULL是防止产生null结果,利用别名money,type_test使其获得相同的列不会报错

2、怎样将type1和card还有一个type2转化为列即第一张图

利用case when

select shop ‘店铺’,

sum((case type_test when ‘type1’ then money else 0 end)) ‘type1’,

sum((case type_test when ‘type2’ then money else 0 end)) ‘type2’,

sum((case type_test when ‘card’ then money else 0 end)) ‘card’,

sum(money) ‘总和’

from(

select IFNULL(sum(b.money),0) money,shop,’type1’ type_test from bill b where b.type=1 group by b.shop

union

select IFNULL(sum(b.money),0) money,shop,’type2’ type_test from bill b where b.type=2 group by b.shop

union

select IFNULL(sum(b.v1),0) money,shop,’card’ type_test from card_model b group by b.shop

)a

group by shop

这里利用case when 和别名type_test判断再取别名得到想要的结果,最后按shop分组。

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

mysql 行转列case when_mysql行转列利用casewhen_MySQL相关推荐

  1. mysql+行转列case+when_mySql 行转列 列转行 case when

    from https://www.jianshu.com/p/5a2dae144238 mark: -- 建表 CREATE TABLE `student` ( `ID` int(10) NOT NU ...

  2. mysql then_mysql语法之case when then与列转行

    mysql语法中case when then与列转行的使用场景非常丰富. case语句类似java中条件分支语句的作用,可以类比java中的switch语句或者if语句来学习. 其语法如下: case ...

  3. oracle行转列 case,Oracle 行转列总结 Case When,Decode,PIVOT 三种方式

    Decode 方式 SELECT a.COUNTRY AS "国家", SUM(DECODE(a.SEX, 1, a.POPULCATION)) AS "男", ...

  4. mysql 行转列查询优化_行转列及列转行查询

    开发过程中常遇到行转列或是列转行的问题,即需要将数据库中一张表信息进行行转列操作,再将每列(即每个字段)作为与其他表进行联表查询的字段进行显示. 一.行转列:将原来同一列下多行的不同内容作为多个字段, ...

  5. mysql php 列转行_MySql行转列、列转行

    现mysql中有一张表php_user表,表结构为: 表中数据有: 现在想查询出来不同学生的语数外成绩在一行显示,那么需要用到行转列的用法, 一.行转列 1.使用case...when....then ...

  6. MySQL 行之间连接符_MySQL行转列 列转行 连接字符串 潍鲸 潍鲸科技

    创建MySQL数据库表结构 DROP TABLE IF EXISTS `weijing`; CREATE TABLE `weijing` ( `Id` int(11) NOT NULL AUTO_IN ...

  7. mysql行转列和列转行_Mysql中行转列和列转行

    一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id IN ...

  8. mysql列转行统计查询_Mysql 列转行统计查询 、行转列统计查询

    Mysql group_concat函数列转行,与行转列 例一: SELECT num from user 1.使用group_concat函数得到列转行 select group_concat(nu ...

  9. MySQL 表列数和行大小有哪些限制?

    列数限制 MySQL对每个表有4096列的硬限制,但是对于给定的表,有效最大值可能会更少.确切的列限制取决于几个因素: 表的最大行大小限制了列的数量(可能还有大小),因为所有列的总长度不能超过该大小 ...

最新文章

  1. C语言中positive用法,sprintf - C语言库函数
  2. 网络流Dinic算法模板 POJ1273
  3. Linux系统如何把一个文件传递到另一个机器上
  4. LeetCode OJ:Linked List Cycle(链表循环)
  5. 陈国君Java程序设计基础笔记和习题
  6. Windows命令行工具cmder配置
  7. word在html中预览,在网页中预览word和excel
  8. quicktime安装不了
  9. 支持笔锋效果的手写签字控件
  10. switch更新找不到服务器,switch更新无法连接服务器(图文)
  11. git cherry-pick 的时候出现git cherry-pick xxx  fatal: bad object xxx
  12. 回答几个很多人在问的问题,以及苏生不惑提供的服务
  13. python调用百度AI识别文字和表格
  14. HTML怎么像是下划线、穿越文字的横线以及上划线
  15. 芬兰ZYFRA公司在首届中俄创新大赛中获胜
  16. 中年失业都去做什么_人到中年失业该何去何从?
  17. 【Python】什么是python对象
  18. 项目经理必备——软件报价
  19. 第二十章 使用系统监视器 - 定义系统监视器组件
  20. 利用 tkinter 写表白软件,加入动画效果

热门文章

  1. 怎么让python播放音频_用Python播放音频
  2. JAVA外包服务的整体工作流程有哪些
  3. 计算机文件路径的表示
  4. 电脑重装系统失败无法开机怎么办如何解决
  5. 基址寻址和变址寻址的不同
  6. 基于VMware 的 hive安装与启动
  7. Muli3D 5 判断点与面的关系
  8. nginx url实现二次转发
  9. Opencv--waitKey()函数详解
  10. Android手机摇一摇功能的简单实现