简单实现PostgreSQL统计数据行转列-[PostgreSQL行转列]

本文介绍了如何在PostgreSQL9.3及以上版本中使用WITHT_DATAAS函数将SQL查询的统计数据从行转换为列,通过crossjoinlateral和values子句实现数据格式的转换并给出了实际示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单实现PostgreSQL统计数据行转列-[PostgreSQL行转列]

注:PostgreSQL 9.3版本以上才支持join lateral

  • 语法
WITH T_DATA AS(
 <查询统计数据的SQL>
)
select t.* from T_DATA 
cross join lateral
(values
	('KEY列的键名称',KEY列的键对应的值),
) as t(KEY,VAL)
  • 示例:
    • 统计SQL:
     SELECT
      20 SUCCESS_RATE,
      100 TOTAL_NUMBER,
      30 INIT_NUM,
      20 FAIL_NUM,
      20 SUCCESS_NUM,
      30 EXPIRED_NUM
    
    • 统计SQL查询的结果:
      在这里插入图片描述
    • 统计数据行转列SQL:
 WITH T_DATA AS(
 SELECT
	20 SUCCESS_RATE,
	100 TOTAL_NUMBER,
	30 INIT_NUM,
	20 FAIL_NUM,
	20 SUCCESS_NUM,
	30 EXPIRED_NUM
)
select t.* from T_DATA 
cross join lateral
(values
	('成功率',SUCCESS_RATE),
	('总笔数',TOTAL_NUMBER),
	('初始状态数',INIT_NUM),
	( '失败数',FAIL_NUM),
	('成功数',SUCCESS_NUM),
	('过期数',EXPIRED_NUM)
) as t(KEY,VAL)

结果 :
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海山人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值