`
gaojingsong
  • 浏览: 1210756 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【复杂SQL案例--行列转换】

阅读更多

案例来源,感谢网友提供的案例,在其基础上面进行了,简化,尽管不满足数据库范式,但是足以说明问题

 原始要求如下:



 

已知源表数据如下:

PID Num Loc      
苹果 11 北京仓      
香蕉 22 上海仓      
大鸭梨 44 广州仓      
苹果 66 深圳仓      

 

现在要求得到每种商品在库存量报表,方便统一调度和展示

PID 北京仓 上海仓 广州仓 深圳仓 ……
苹果 11 0 0 66  
香蕉 0 22 0 0  
大鸭梨 0 0 44 0  

 

 

解决方案一:


 

解决方案二:


 

 

解决方案三:

 

 

附件:

/*

Navicat MySQL Data Transfer

 

Source Server         : localhost

Source Server Version : 50547

Source Host           : localhost:3306

Source Database       : db1

 

Target Server Type    : MYSQL

Target Server Version : 50547

File Encoding         : 65001

 

Date: 2017-07-09 17:58:13

*/

 

SET FOREIGN_KEY_CHECKS=0;

 

-- ----------------------------

-- Table structure for `p`

-- ----------------------------

DROP TABLE IF EXISTS `p`;

CREATE TABLE `p` (

  `id` int(11) NOT NULL DEFAULT '0',

  `pid` varchar(30) DEFAULT NULL,

  `num` int(11) DEFAULT NULL,

  `loc` varchar(30) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

 

-- ----------------------------

-- Records of p

-- ----------------------------

INSERT INTO `p` VALUES ('1', '苹果', '11', '北京仓');

INSERT INTO `p` VALUES ('2', '香蕉', '22', '上海仓');

INSERT INTO `p` VALUES ('3', '大鸭梨', '44', '广州仓');

INSERT INTO `p` VALUES ('4', '苹果', '66', '深圳仓');

 

 

0
1
分享到:
评论

相关推荐

    SQL的相关知识---行列转换

    通过对以上案例的分析,我们可以看到SQL不仅能够轻松实现基本的行列转换,还能够通过动态生成SQL语句的方式,灵活应对各种复杂场景。这种灵活性和扩展性使得SQL成为处理数据库数据的强大工具。希望本文能对你在准备...

    Microsoft SQL Server 2005技术内幕全套(三):T-SQL查询.part1

    透视查询(PIVOT)和行列转换也是重要的内容,它们能够将数据从行转换为列或反之,以满足特定的报表需求。 窗口函数(Window Functions)是SQL Server 2005中的一个重要特性,它们允许我们在每个结果行上执行计算,...

    SQL之行列互变问题

    根据题目描述:“SQL行变列,列变行问题虽然解决方案众多,但大多存在着代码复杂,性能欠佳等问题。”这表明,在实际应用中,尽管存在多种方法可以实现行列互换,但这些方法往往不够简洁或执行效率不高。因此,掌握...

    玩转-SQL2005数据库行列转换

    在SQL Server 2005中,行列转换是数据库操作中的一个重要技巧,它涉及到数据的组织方式转换,常用于报表生成或数据分析。行转列主要适用于将多行数据转化为单行,而列转行则是将单行数据拆分为多行。在本案例中,...

    SQL 将 竖表 变横

    该脚本定义了一个存储过程`Proc2`,其功能是根据传入的表名和列名自动生成行列转换所需的SQL语句。具体步骤如下: 1. **初始化参数**:创建一个游标`cursorTest`用于获取指定列的所有不同值。 2. **动态构建SQL语句...

    Oracle单条SQL语句可以做什么.pdf

    本文通过几个具体的案例,探讨了如何利用单条SQL语句来实现复杂的查询逻辑,包括行列转换、处理重复值以及自定义合计函数等功能。 #### 二、行列转换 行列转换是数据库操作中常见的一种需求,通常用于将表格中的...

    轻松掌握SQL(第四版)

    其次,书中将涵盖高级SQL特性,如聚合函数(如COUNT、SUM、AVG、MAX和MIN)用于统计分析,窗口函数(如RANK、ROW_NUMBER、LEAD和LAG)用于行列间的计算,以及CASE表达式用于条件判断和数据转换。这些功能强大的工具...

    SQL语言艺术

    数据的行列转换 基于变量列表的查询 基于范围的聚合 一般规则,最后使用 查询与列表中多个项目相符的记录 最佳匹配查询 优化器指令 12 明察秋毫:监控性能 数据库速度缓慢 服务器负载因素 何谓“性能优良” 从业务...

    关于UNPIVOT 操作符

    UNPIVOT操作符主要用于数据库中的行列转换,即将原本多列数据转换为多行数据的一种方式。这种转换对于数据整理、分析及展示尤为重要,特别是在处理具有多维度数据的情况下。 #### 二、UNPIVOT的基本概念 ##### 1. ...

    数据库数据通过excel导出案例

    总之,“数据库数据通过excel导出案例”涉及到的关键知识点包括数据库连接、SQL查询、数据导出、数据格式转换、Excel数据写入以及Excel的数据分析和处理。通过学习和实践这些技能,IT专业人士能够更高效地管理和分析...

    Sql Server 2000 行转列的实现(横排)

    这种技术通常被称为“行转列”或“行列转换”。在本例中,我们将讨论如何通过案例来理解这个过程。 首先,我们假设有一个学生信息系统,它由三张表组成:`Student`,`Subject` 和 `Score`。`Student` 表存储学生的...

    查询引擎技术红皮书

    - **查询设计**:支持复杂查询的设计,包括但不限于参数控制、SQL设计、数据交叉等。 - **报表展现**:提供灵活的报表展现方式,如格式设计、报表浏览、报表打印等。 - **个性化定制**:允许用户根据特定需求定制...

    oracle简单培训资料

    6. **SQL脚本**:`oracle.sql`、`行列转换.sql`、`分页演示.sql`都是SQL查询脚本,分别可能涉及基本的SQL操作、数据的行列转换技巧以及分页查询的实现,这些对于数据库查询优化和数据处理至关重要。 7. **数据库锁*...

    Mysql数据库学习

    - 根据具体需求编写更复杂的SQL查询语句。 **7.3 分页查询加强** - 使用LIMIT结合OFFSET进行分页查询。 - 示例:`SELECT * FROM students LIMIT 10 OFFSET 20;` **7.4 子查询使用加强** - 子查询是在另一个查询...

    sqlserver中查询横表变竖表的sql语句简析

    在SQL Server中,有时我们需要将数据从横向布局(也称为宽表)转换为纵向布局(窄表),这种操作被称为“转置”或“行列转换”。这通常发生在我们想要在一个记录中展示多列值,而这些值原本是分散在多个行上的。在本...

    学习心得-《如何利用Excel高效地处理数据》.pdf

    文章列举了一系列实际应用案例,如利用PQ进行动态数据汇总、数据合并拆分、网页数据抓取、多表记录合并、透视列应用、行列管理等,展示了如何通过PQ实现各种复杂的数据处理任务。 知识点七:高级技巧 PQ还支持SQL...

    海量数据分析架构

    2. **ETL Tool(提取、转换、加载工具)**:负责从不同源抽取数据,经过清洗、转换后加载到数据仓库。 3. **OLAP Server(在线分析处理服务器)**:提供多维数据分析能力,支持复杂的查询需求。 4. **Reporting Tool...

    矿山

    同时,TSQL也支持与数据科学相关的功能,比如使用CASE语句进行条件判断,或者通过PIVOT和UNPIVOT操作进行数据的行列转换,这在数据预处理阶段尤为有用。 对于想要深入学习TSQL和数据挖掘的人来说,了解并熟练掌握...

    快逸报表DOME

    2. 数据集与计算:用户可以创建数据集来预处理和计算数据,支持SQL查询、公式计算以及数据转换,确保报表基于准确且有意义的数据。 3. 实时更新:通过实时数据连接,快逸报表能实现数据的即时刷新,保证用户看到的...

    国产打印控件

    在软件开发中,打印控件是用于处理输出数据到打印机的关键工具,尤其在处理复杂报表和多页文档时显得尤为重要。本文将深入探讨国产打印控件的核心功能、工作原理以及其在实际开发中的应用场景。 首先,打印控件的...

Global site tag (gtag.js) - Google Analytics