[PG]将一行数据打散成多行数据

news/2024/7/9 20:14:45 标签: sql, postgresql

原始数据

      比如有如此表结构定义:

        假如查询数据如下:

sql">select 
    dt as "日期",
    bj_count as "北京", sh_count as "上海",
    gz_count as "广州", sz_count as "深圳"
from city_stats
order by dt

---------------------------------------------------------
|    日期     |   北京    |   上海   |   广州    |  深圳   |
---------------------------------------------------------
| 2023-09-04 |   1111   |   1122   |   1133   |  1144   |
| 2023-09-05 |   2211   |   2222   |   2233   |  2244   |
| 2023-09-06 |   3311   |   3322   |   3333   |  3344   |
---------------------------------------------------------

期望效果

sql">------------------------------------
|      日期     |   城市   |   统计  |
------------------------------------
|  2023-09-04  |   北京   |   1111  |
|  2023-09-04  |   上海   |   1122  |
|  2023-09-04  |   广州   |   1133  |
|  2023-09-04  |   深圳   |   1144  |
|  2023-09-05  |   北京   |   2211  |
|  2023-09-05  |   上海   |   2222  |
|  2023-09-05  |   广州   |   2233  |
|  2023-09-05  |   深圳   |   2244  |
|  2023-09-06  |   北京   |   3311  |
|  2023-09-06  |   上海   |   3322  |
|  2023-09-06  |   广州   |   3333  |
|  2023-09-06  |   深圳   |   3344  |
------------------------------------

解决方案

   采用笛卡尔积方式"CROSS JOIN":

sql">select 
    s.dt as "日期", 
    c.city_name as "城市",
    c.city_count as "统计"
from city_stats as s
cross join LATERAL(
    VALUES
        (1,'北京',s.bj_count),
        (2,'上海',s.sh_count),
        (3,'广州',s.gz_count),
        (4,'深圳',s.sz_count)
) as c (city_order,city_name,city_count)
order by s.dt, c.city_order

        执行结果:


http://www.niftyadmin.cn/n/5007036.html

相关文章

vue.js+nodejs家庭个人理财收支管理系统5x6nf

本收支管理系统以vue.js作为框架,nodejs语言,B/S模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块:用户管理、收入分类、支出分类、每日收入、每日支出等模块。 本文的组织结构如下: 1、绪论。综述了本文的研究背景…

上海控安SmartRocket系列产品推介(六):SmartRocket PeneX汽车网络安全测试系统

产品概述 上海控安汽车网络安全测试系统PeneX(Penetrator X)是一款支持对整车及车辆零部件及子系统实施网络安全测试的系统,其包含硬件安全、软件系统安全、车内通信及车外通信四大安全测试系统;支持合规性测试,包含国…

创新领航 | 竹云产品入选“年度优秀创新软件产品推广目录”

8月31日,由中国电子信息行业联合会主办的第二十五届中国国际软件博览会在天津拉开帷幕,本次大会以“塑造软件新生态 赋能发展新变革”为主题,为全国乃至全球软件行业高质量发展聚智聚“力”。 大会发布“2022-2023年度优秀创新软件产品推广目…

2023年高教社杯全国大学生数学建模竞赛参赛事项注意

MathClub数模资源,含专属思路 资源链接:点击这里获取众多数模资料、思路精讲、论文模板latex和word、学习书籍等 2023高教社杯数学建模国赛–赛前准备 一年一度的数学建模国赛要来啦!!!小编仔细阅读了比赛官方网站上…

InnoDB全文索引是如何实现的?

分析&回答 全文索引的底层实现为倒排索引。 为什么叫倒排索引(反向索引) 当表上存在全文索引时,就会隐式的建立一个名为FTS_DOC_ID的列,并在其上创建一个唯一索引,用于标识分词出现的记录行。你也可以显式的创建…

23个react常见问题

1、setState 是异步还是同步? 合成事件中是异步 钩子函数中的是异步 原生事件中是同步 setTimeout中是同步 相关链接:你真的理解setState吗?: 2、聊聊 react16.4 的生命周期 图片 相关连接:React 生命周期 我对 Reac…

beetlsql3.x版本适配达梦数据库

BeetlSQL介绍 BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台 传统数据库:MySQL(国内兼容MySQL协议的各种大数据库),MariaDB…

工业4.0时代生产系统对接集成优势,MES和ERP专业一体化管理-亿发

在现代制造业中,市场变化都在不断加速。企业面临着不断加强生产效率、生产质量和快速适应市场需求的挑战。在制造行业,日常管理中的ERP系统、MES系统就显得尤为重要。越来越多的企业正在采用MES系统和ERP管理系统的融合,以实现智能化生产管理…