IT评测·应用市场-qidao123.com

标题: My SQL 列转行操作 [打印本页]

作者: 守听    时间: 2024-9-6 14:40
标题: My SQL 列转行操作
原表布局如下,我们可以发现,“日运输量”和“车次”是在同一张表中相互独立的两个字段,即独立的两列数据,下面,我将体系中的测试数据以及代码全部放出来,以解释列转行的操作方法

 原表数据库查询代码:
  1. 1 SELECT
  2. 2     yzrq AS 运作日期,
  3. 3     DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
  4. 4     rysl AS 日运输量,
  5. 5     jldw AS 计量单位,
  6. 6     cc AS 车次
  7. 7 FROM
  8. 8     uf_ysmxb
复制代码
原表查询结果:

目标:车次需要按月进行统计,相当于列转行
终极需要字段:年代、月度发货量、发货量范例
 
第一步:我们需要单独将车次数据提取出来
  1. SELECT
  2.         yzrq,
  3.         DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
  4.         cc AS 日运输量,
  5.         '车次' AS 发货量类型
  6.     FROM
  7.         uf_ysmxb
复制代码

第二步:使用union all与其他的数据合并(到这里就已经实现了列转行的操作),注意,合并的两张表必须保证字段范例和名字一致
  1. SELECT        yzrq AS 运作日期,        DATE_FORMAT( yzrq, '%Y-%m' ) AS 年代,        rysl AS 日运输量,    CASE            jldw             WHEN 34 THEN            '重量' ELSE '体积'         END AS 发货量范例     FROM        uf_ysmxb [b]UNION ALL[/b]    SELECT
  2.         yzrq,
  3.         DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
  4.         cc AS 日运输量,
  5.         '车次' AS 发货量类型
  6.     FROM
  7.         uf_ysmxb
复制代码

第三步:将数据按要求进行汇总统计
  1. 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
  2.         yzrq,
  3.         DATE_FORMAT( yzrq, '%Y-%m' ) AS 年月,
  4.         cc AS 日运输量,
  5.         '车次' AS 发货量类型
  6.     FROM
  7.         uf_ysmxb     ) AS T GROUP BY    年代,发货量范例
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4