简单实现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)

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

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐