原表结构如下,我们可以发现,“日运输量”和“车次”是在同一张表中相互独立的两个字段,即独立的两列数据,下面,我将系统中的测试数据以及代码全部放出来,以解释列转行的操作方法

原表数据库查询代码:

1 SELECT
2 yzrq AS 运作日期,
3 DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
4 rysl AS 日运输量,
5 jldw AS 计量单位,
6 cc AS 车次
7 FROM
8 uf_ysmxb

原表查询结果:

目标:车次需要按月进行统计,相当于列转行

最终需要字段:年月、月度发货量、发货量类型

第一步:我们需要单独将车次数据提取出来

SELECT
yzrq,
DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
cc AS 日运输量,
'车次' AS 发货量类型
FROM
uf_ysmxb

第二步:使用union all与其他的数据合并(到这里就已经实现了列转行的操作),注意,合并的两张表必须保证字段类型和名字一致

SELECT
yzrq AS 运作日期,
DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
rysl AS 日运输量,
CASE
jldw
WHEN 34 THEN
'重量' ELSE '体积'
END AS 发货量类型
FROM
uf_ysmxb UNION ALL
SELECT
yzrq,
DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
cc AS 日运输量,
'车次' AS 发货量类型
FROM
uf_ysmxb

第三步:将数据按要求进行汇总统计

SELECT
年月,
SUM(日运输量) AS 月度发货量,发货量类型
FROM
(
SELECT
yzrq AS 运作日期,
DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
rysl AS 日运输量,
CASE
jldw
WHEN 34 THEN
'重量' ELSE '体积'
END AS 发货量类型
FROM
uf_ysmxb UNION ALL
SELECT
yzrq,
DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
cc AS 日运输量,
'车次' AS 发货量类型
FROM
uf_ysmxb
) AS T
GROUP BY
年月,发货量类型

My SQL 列转行操作的更多相关文章

  1. SQL 列转行 分组去重并合并多条记录

    继上篇<SQL 列转行 合并多条记录>后,有网友反馈新的需求还是不太会用. 现举例说明 一,网友需要如下的效果: 其实,这个需求依然可以我上篇的方法进行解答,但为了实现分组,需要disti ...

  2. SQL列转行,行转列实现

    在工作中,大家可能会遇到一些SQL列转行.行转列的问题,恰好,我也遇到了,就在此记录一下.此处所用的是SQLServer2008R2. 行转列,列转行,都要预先知道要要处理多少数据,在此我就以三种方案 ...

  3. SQL 列转行的实现

    --列转行,逗号拼接指定列的值Oracle中写法:select wmsys.wm_concat(Field1) from TableASQL Server中写法:SELECT STUFF(( SELE ...

  4. sql列转行查询

    test表: 执行列转行sql: select student, sum(case Course when '语文' then Score else null end) 语文, sum(case Co ...

  5. Sql 列转行字符串

    select OrderID,ProdDetailID from A 表A : OrderID,ProdDetailID 1             6 1             7 1       ...

  6. SQL Server 行转列 列转行操作

    1.多行转成一行(并以','分开) 表数据如下图: 查询结果如下图: SQL查询脚本: SELECT addPer, house_code = (STUFF((SELECT ',' + house_c ...

  7. SQL 列转行,即多行合并成一条

    需求:按照分组,将多条记录内容合并成一条,效果如下: 数据库示例: CREATE TABLE [t2]([NID] [bigint] NULL,[district] [nvarchar](255) N ...

  8. sql 列转行

    原表:转过的表: 代码: ) set @sql = 'select AssetRecordId ' select @sql = @sql + ' , max(case ExtendName when ...

  9. Sql"列转行"三种方法对比

    SQL code------ 合并列值  --***************************************************************************** ...

  10. 利用XML语法 SQL 列转行

    --行转列 固定xml语法 declare @xml xml ; set @xml=cast('<v>2</v><v>4</v><v>3&l ...

随机推荐

  1. JDBC Vertica Source Connector 使用文档

    支持以下引擎 Spark Flink SeaTunnel Zeta 关键特性 批处理 精确一次性处理 列投影 并行处理 支持用户自定义拆分 支持查询 SQL 并实现投影效果 描述 通过 JDBC 读取 ...

  2. Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral

    DETR能够消除物体检测中许多手工设计组件的需求,同时展示良好的性能.但由于注意力模块在处理图像特征图方面的限制,DETR存在收敛速度慢和特征分辨率有限的问题.为了缓解这些问题,论文提出了Deform ...

  3. 微服务全链路跟踪:grpc集成zipkin

    微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...

  4. C 语言多文件编译

    C 语言中的多文件编程通常涉及将代码分散在几个不同的源文件(.c 文件)和头文件(.h 文件)中.这么做可以帮助你组织大型项目,提高代码的重用性,便于团队合作,分离接口和实现,以及加快编译时间.下面是 ...

  5. VC 单文档FormView视图增加打印预览

    1修改my.rc文件二处 3 TEXTINCLUDE BEGIN "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO ...

  6. 探索不同引擎Innodb和Myisam的索引优化方案

    数据库可能存在千万级的数据,必须将这些行数据以一定的结构组织起来做到高效的增删改查. 我们将分别探索innodb和myisam两种引擎的索引方案. 一.InnoDB的索引 1.假设表初始没有记录,只有 ...

  7. 【JS设计模式笔记】给我一张名片-工厂方法模式(创建型)

    广告展现 例如,关于计算机培训广告资源需要投放,一批是Java的用绿色字体,一批是PHP的,用黄色字体,红色背景. // 创建Java学科类 var Java = function (content) ...

  8. SPiT:超像素驱动的非规则ViT标记化,实现更真实的图像理解 | ECCV 2024

    Vision Transformer(ViT) 架构传统上采用基于网格的方法进行标记化,而不考虑图像的语义内容.论文提出了一种模块化的超像素非规则标记化策略,该策略将标记化和特征提取解耦,与当前将两者 ...

  9. RxJS 系列 – Utility Operators

    前言 前几篇介绍过了 Creation Operators Filtering Operators Join Creation Operators Error Handling Operators T ...

  10. SQL Server STRING_AGG

    参考: How To Use STRING_AGG – Concat Multiple Row Values In SQL Server 如果你想做 string.join(',', collecti ...