psql 列转行

来源:互联网 发布:sas软件 编辑:程序博客网 时间:2024/06/05 23:48

需求

学生成绩表

  • 创建表初始化
CREATE TABLE public.test (  name               VARCHAR(20),  score              FLOAT,  total_availability FLOAT,  shelf_availability FLOAT);INSERT INTO public.test (name, score, total_availability, shelf_availability) VALUES ('A', 1, 1.1, 1.2);INSERT INTO public.test (name, score, total_availability, shelf_availability) VALUES ('B', 3, 2.1, 2.2);INSERT INTO public.test (name, score, total_availability, shelf_availability) VALUES ('C', 6, 3.3, 3.4);INSERT INTO public.test (name, score, total_availability, shelf_availability) VALUES ('D', 10, 4.1, 4.2);SELECT * FROM public.test;

这里写图片描述

  • 行转列
SELECT  name,  score,  unnest(ARRAY ['total_availability' :: TEXT, 'shelf_availability' :: TEXT])                                        AS kpi_details,  unnest(      ARRAY [public.test.total_availability :: NUMERIC(30, 16), public.test.shelf_availability :: NUMERIC(30, 16)]) AS valueFROM public.test;

这里写图片描述