当前位置: 首页 > article >正文

PostgreSQL 行转列实现

说明:需求背景如下,现在有这样的一个结果集,要对结果集中的数据进行行转列显示。

查询的结果集如下所示:
"scf01"    "pej01"    "pfo01"    "pfo10"
827910843726446592    827910844204597248    109    1.00
827910843726446592    827910844204597248    110    1.00
827910843726446592    827910844204597248    111    11.00
827910843726446592    827910844204597248    112    1.00

现在想要如下的显示效果:
"scf01"    "pej01"    "rightair"    "init_val"    "is_deaf"    "cover"
827910843726446592    827910844204597248    1.00    1.00    11.00    1.00

PostgreSQL 非常强大的功能在于它实现了很多内置的方法来实现某种功能。
下面我们利用 PostgreSQL 的 crosstab 来实现此目标。

SELECT *
FROM crosstab(
   'SELECT scf01,pej01,pfo01,pfo10
    FROM pfo1
    WHERE scf01 = 827910843726446592
    ORDER BY 1,2,3,4',
   'SELECT DISTINCT pfo01 FROM pfo1 WHERE scf01 = 827910843726446592 ORDER BY 1'
) AS ct(scf01 bigint,pej01 bigint, "rightair_500hz" numeric, "init_val" numeric,"is_deaf" numeric,"cover" numeric);


http://www.kler.cn/a/394429.html

相关文章:

  • Java - 日志体系_Apache Commons Logging(JCL)日志接口库
  • 用python ollama qwen2.5 开发一个AI修仙游戏
  • 「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
  • 【蓝桥杯】43688-《Excel地址问题》
  • Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
  • 在 Sanic 应用中使用内存缓存管理 IP 黑名单
  • 存储大挑战:如何在可靠性与大容量之间玩转平衡术?
  • LabVIEW 使用 Snippet
  • 【Excel】数据透视表分析方法大全
  • 【C++进阶实战】基于linux的天气预报系统
  • CTF攻防世界小白刷题自学笔记15
  • 【Golang】golang框架,为什么选择GoFrame, GoFrame使用心得
  • Electron 项目中杀掉进程的不同方式
  • 《FreeRTOS列表和列表项篇》
  • 6.584-Lab1:MapReduce
  • 深入解析 OpenHarmony 构建系统-1
  • 制作图片木马
  • 为什么海外服务器IP会被封
  • WebKit(适用2024年11月份版本)
  • 笔记--(网络服务4)、远程访问及控制
  • JDBC使用方式(项目由于一些不可逆因素,必须要使用JDBC连接)
  • gcd的递归与非递归实现
  • opencv视频读写
  • 机器学习(1)
  • Substance Painter技巧及心得
  • 自動換IP為什麼會不穩定?