`

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列).

分享到:
评论

相关推荐

    SQL动态交叉表,希望对SQL程序员有帮助

    在SQL编程中,动态交叉表查询是一种非常实用的技术,它能够帮助我们以表格形式展示多维度数据,使得数据更易理解和分析。交叉表,又称作透视表或转置表,通常用于将行与列的数据位置互换,或者将某一列的数据作为新...

    MySQL交叉表实现分享

    在MySQL中,我们可以通过多种方法来实现交叉表,这里主要介绍一种利用`SUM(IF())`与`WITH ROLLUP`结合的方法,以满足题目给出的需求。 首先,我们创建了一个名为`tx`的表,并插入了一些示例数据。表`tx`有四个字段...

    oracle交叉表sql

    ### Oracle交叉表SQL知识点解析 #### 一、交叉表(Pivot Table)概念与应用场景 在数据分析领域,交叉表(Pivot Table)是一种常见的数据整理技术,它将原始数据按照特定维度进行重组,使得数据从行式存储变为列式...

    C#动态交叉表查询

    本主题聚焦于"C#动态交叉表查询",这是一个关键的数据库操作技术,用于处理和展示数据的多维度分析。交叉表查询,也称为透视表或转置查询,允许用户将数据按照不同的列和行进行汇总,以揭示更深层次的模式和趋势。 ...

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

    MySQL 数据库创建和表操作基础知识 本资源摘要信息介绍了 MySQL 中创建数据库和表的基本操作步骤,并对每个步骤进行了详细的解释。 一、查看当前存在的数据库 在 MySQL 中,使用 `show databases;` 语句可以查看...

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

    列联表(Cross Tabulation)和交叉表(Pivot Table)是这种转换的两种术语,它们用于将行数据转换为列数据,或者反之。在描述的场景中,我们需要在列不确定的情况下进行动态的行列转换。 首先,我们来看第一种方法...

    MySQL多表查询详解上

    MySQL多表查询是数据库操作中的常见任务,尤其在处理复杂数据关系时不可或缺。本文将深入讲解MySQL中的多表查询,包括各种类型的连接查询,旨在帮助读者理解和掌握如何有效地从多个表中提取所需信息。 首先,我们要...

    day19--mysql多表查询1

    MySQL作为广泛使用的开源关系型数据库管理系统,提供了多种多表查询方式来处理多对一、一对多以及多对多的关系。本文将深入探讨这些关系和查询方法。 首先,我们来看一下多表关系。在实际业务中,数据往往分布在多...

    MySQL多表查询(四).pdf

    ### MySQL多表查询详解 #### 一、多表关系与设计原则 在数据库设计中,为了反映业务逻辑的真实情况,通常需要定义不同表之间的关系。这些关系主要包括:一对多(或多对一)、多对多以及一对一。 - **一对多(多对...

    mysql关联查询

    MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...

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

    在MySQL数据库中,多表关联查询是数据分析师和开发人员常用的一种高级技能,它能够从多个相关联的数据表中提取并合并所需的信息。这使得我们可以处理复杂的数据需求,获取更全面、更精确的分析结果。以下是对四种...

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

    在MySQL数据库中,多表连接查询是数据操作的重要部分,特别是在处理复杂的数据关系时。本文将详细介绍MySQL中涉及的几种基本的多表连接查询方法,包括笛卡尔积、内连接和外连接,以及它们的使用场景和技巧。 1. ...

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

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

    mysql第五章.pdf

    5. 子查询:子查询是嵌套在SELECT、INSERT、UPDATE或DELETE语句中的查询。子查询通常用在WHERE子句中,作为查询条件。它们从内层向外层逐层处理,处理完最内层的子查询后,将结果用于外层查询的条件中。 6. 排序与...

    Mysql 数据库 多表链接

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

    Poco访问数据库(测试例子MySQl)

    这个例子展示了Poco库如何与MySQL数据库进行基本的交互,包括连接、查询、插入、更新和删除数据。实际项目中,你可能需要根据需求进行更复杂的操作,如处理批处理、游标、存储过程等。记住,始终确保对资源进行适当...

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

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

Global site tag (gtag.js) - Google Analytics