# 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编程中,动态交叉表查询是一种非常实用的技术,它能够帮助我们以表格形式展示多维度数据,使得数据更易理解和分析。交叉表,又称作透视表或转置表,通常用于将行与列的数据位置互换,或者将某一列的数据作为新...
在MySQL中,我们可以通过多种方法来实现交叉表,这里主要介绍一种利用`SUM(IF())`与`WITH ROLLUP`结合的方法,以满足题目给出的需求。 首先,我们创建了一个名为`tx`的表,并插入了一些示例数据。表`tx`有四个字段...
### Oracle交叉表SQL知识点解析 #### 一、交叉表(Pivot Table)概念与应用场景 在数据分析领域,交叉表(Pivot Table)是一种常见的数据整理技术,它将原始数据按照特定维度进行重组,使得数据从行式存储变为列式...
本主题聚焦于"C#动态交叉表查询",这是一个关键的数据库操作技术,用于处理和展示数据的多维度分析。交叉表查询,也称为透视表或转置查询,允许用户将数据按照不同的列和行进行汇总,以揭示更深层次的模式和趋势。 ...
MySQL 数据库创建和表操作基础知识 本资源摘要信息介绍了 MySQL 中创建数据库和表的基本操作步骤,并对每个步骤进行了详细的解释。 一、查看当前存在的数据库 在 MySQL 中,使用 `show databases;` 语句可以查看...
列联表(Cross Tabulation)和交叉表(Pivot Table)是这种转换的两种术语,它们用于将行数据转换为列数据,或者反之。在描述的场景中,我们需要在列不确定的情况下进行动态的行列转换。 首先,我们来看第一种方法...
MySQL多表查询是数据库操作中的常见任务,尤其在处理复杂数据关系时不可或缺。本文将深入讲解MySQL中的多表查询,包括各种类型的连接查询,旨在帮助读者理解和掌握如何有效地从多个表中提取所需信息。 首先,我们要...
MySQL作为广泛使用的开源关系型数据库管理系统,提供了多种多表查询方式来处理多对一、一对多以及多对多的关系。本文将深入探讨这些关系和查询方法。 首先,我们来看一下多表关系。在实际业务中,数据往往分布在多...
### MySQL多表查询详解 #### 一、多表关系与设计原则 在数据库设计中,为了反映业务逻辑的真实情况,通常需要定义不同表之间的关系。这些关系主要包括:一对多(或多对一)、多对多以及一对一。 - **一对多(多对...
MySQL关联查询是数据库操作中的重要概念,用于在多个表之间建立连接,以便从不同表中检索相关数据。关联查询能够让我们在单个SQL语句中处理来自多个表的数据,极大地提高了数据查询的效率和灵活性。这里我们将深入...
在MySQL数据库中,多表关联查询是数据分析师和开发人员常用的一种高级技能,它能够从多个相关联的数据表中提取并合并所需的信息。这使得我们可以处理复杂的数据需求,获取更全面、更精确的分析结果。以下是对四种...
在MySQL数据库中,多表连接查询是数据操作的重要部分,特别是在处理复杂的数据关系时。本文将详细介绍MySQL中涉及的几种基本的多表连接查询方法,包括笛卡尔积、内连接和外连接,以及它们的使用场景和技巧。 1. ...
1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用’,’ 如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2 由于其...
5. 子查询:子查询是嵌套在SELECT、INSERT、UPDATE或DELETE语句中的查询。子查询通常用在WHERE子句中,作为查询条件。它们从内层向外层逐层处理,处理完最内层的子查询后,将结果用于外层查询的条件中。 6. 排序与...
连接类型 分为三种:交叉连接、内连接、外...没有where子句的交叉连接将产生连接表的笛卡尔积。 select * from R cross join S; 结果:和笛卡尔积一样,如上图。 select * from R cross join S where R.C = S.C;
这个例子展示了Poco库如何与MySQL数据库进行基本的交互,包括连接、查询、插入、更新和删除数据。实际项目中,你可能需要根据需求进行更复杂的操作,如处理批处理、游标、存储过程等。记住,始终确保对资源进行适当...
MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...