`

Mysql5 交叉表查询

 
阅读更多

# Host: localhost    Database: test
# ------------------------------------------------------
# Server version 5.0.45-community-nt-log

#
# Table structure for table sale
#

DROP TABLE IF EXISTS `sale`;
CREATE TABLE `sale` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `year` int(11) NOT NULL,
  `quarter` int(11) NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

#
# Dumping data for table sale
#

/*!40101 SET NAMES latin1 */;

INSERT INTO `sale` VALUES (1,2004,1,2328);
INSERT INTO `sale` VALUES (2,2004,2,3822);
INSERT INTO `sale` VALUES (3,2004,3,7071);
INSERT INTO `sale` VALUES (4,2004,4,8931);
INSERT INTO `sale` VALUES (5,2005,1,2633);
INSERT INTO `sale` VALUES (6,2005,2,3910);
INSERT INTO `sale` VALUES (7,2005,3,237193);
INSERT INTO `sale` VALUES (8,2005,4,567444);
INSERT INTO `sale` VALUES (9,2006,1,12313);
插入数据后结果为:

id
year
quarter amount
1
2004
1
2328.00
2
2004
2 3822.00
3
2004
3
7071.00
4
2004
4
8931.00
5
2005
1
2633.00
6
2005
2
3910.00
7
2005
3
237193.00
8
2005
4
567444.00
9
2006
1
12313.00



交叉表查询语句:
select a.year, 1d, 2d, 3d, 4d from
(select distinct year from sale) a left join
(select year, amount 1d from sale where quarter=1 group by year) a1d on a.year = a1d.year
left join (select year, amount 2d from sale where quarter=2 group by year) a2d on a2d.year=a.year
left join (select year, amount 3d from sale where quarter=3 group by year) a3d on a3d.year=a.year
left join (select year, amount 4d from sale where quarter=4 group by year) a4d on a4d.year=a.year
该语句查询某年的四个季度的amount,以行显示,显示结果:

year
1d
2d
3d 4d
2004
2328.00
3822.00
7071.00
8931.00
2005
2633.00
3910.00
237193.00
567444.00
2006
12313.00
NULL
NULL
NULL



实现定长列的查询(即quarter的最大取值为4,定长为4列).

分享到:
评论

相关推荐

    Mysql实现交叉表的查询

    Mysql数据库,基于SQL规范的工具方法,实现交叉表的查询

    MySQL交叉表实现分享

    insert into tx values (1 ,’A1′,’B1′,9), (2 ,’A2′,’B1′,7), (3 ,’A3′,’B1′,4), (4 ,’A4′,’B1′,2), (5 ,’A1′,’B2′,2), (6 ,’A2′,’B2′,9), (7 ,’A3′,’B2′,8), (8 ,’A4′,’B2′,5), (9...

    MySQL多表查询与事务的操作.pdf

    连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库...

    实验训练1-在MySQL中创建数据库和表作业.doc

    实验训练1-在MySQL中创建数据库和表作业.doc

    mysql 行列动态转换的实现(列联表,交叉表)

    (1)动态,适用于列不确定情况 create table table_name( id int primary key, col1 char(2), ...(5 ,'A1','B2',2), (6 ,'A2','B2',9), (7 ,'A3','B2',8), (8 ,'A4','B2',5), (9 ,'A1','B3',1),

    MYSQL基础:多表关联查询.docx

    在MySQL数据库中,多表关联查询是一种强大的技术,可以通过连接多个表来检索和组合数据,从而获得更丰富的查询结果。本文将介绍四种常见的多表关联查询类型:交叉连接查询、内连接查询、外连接查询和子查询,并提供...

    详解Mysql多表联合查询效率分析及优化

    1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用’,’ 如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2  由于其...

    Mysql 数据库 多表链接

    连接类型 分为三种:交叉连接、内连接、外...没有where子句的交叉连接将产生连接表的笛卡尔积。 select * from R cross join S; 结果:和笛卡尔积一样,如上图。 select * from R cross join S where R.C = S.C;

    MySQL中基本的多表连接查询教程

    1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用’,’ 如:  由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目...

    二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...

    MySQL命令大全

    5、查询表中的数据 1)、查询所有行 命令:select <字段,字段,...> from 表名 > where 表达式 > 例如:查看表 MyClass 中所有数据 mysql> select * from MyClass; 2)、查询前几行数据 例如:查看表 MyClass ...

    MySQL数据库:交叉连接和内连接.pptx

    SELECT的查询对象由FROM子句指定,各个表用逗号分隔,这样就指定了交叉连接。 其格式为: FROM 表名1 [ [AS] 别名1 ] [ , 表名2[ [AS] 别名2]] … ; 【例】 members表和sell表进行交叉连???。 SELECT Book.*, Sell....

    mysql数据库的基本操作语法

    MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: ...

    mysql连接查询、联合查询、子查询原理与用法实例详解

    连接查询就是将多个表联合起来查询,连接查询方式有内连接、外连接、自然连接、交叉连接。连接查询使得可以同时查看多张表中数据。 内连接:有条件连接,多个表之间依据指定条件连接,匹配结果是保留符合匹配结果...

    MYSQL常用命令大全

    5、查询表中的数据 1)、查询所有行 命令: select <字段1,字段2,...> from 表名 > where 表达式 > 例如:查看表 MyClass 中所有数据 mysql> select * from MyClass; 2)、查询前几行数据 例如:查看表 MyClass 中...

    MySQL多表查询详解下

    继续回顾MySql的多表查询之1999语法 #二,SQL1999语法 语法: SELECT 查询列表 FROM 表1 别名 【连接类型】 JOIN 表2 别名 ON 链接条件 【WHERE 筛选条件】 【GROUP BY 分组】 【HAVING 筛选条件】 【ORDER ...

    详解MySQL数据库–多表查询–内连接,外连接,子查询,相关子查询

    多表查询 使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上; 1交叉连接 第一个表格的所有行 乘以 第二个表格中的所有行,也就是笛卡尔积 创建一个消费者与顾客的表格: ...

    MySql 列转行实例

    Mysql中使用存储过程,动态的把需要列转换为行。一个小小的例子,非常不错,有需要的可以下载。

Global site tag (gtag.js) - Google Analytics