PostgreSQL如何转置查询结果?示例与期望结果说明
PostgreSQL 单行结果集转置实现方法
方法一:固定列手动拼接(适合列少的场景)
如果结果集列数固定且不多,直接用 UNION ALL 拼接每一列的键值对即可,注意要统一列的数据类型(比如转成TEXT)以满足UNION的类型匹配要求:
-- 假设原表名为test_table,筛选出目标单行数据 SELECT 'Id' AS key, CAST(Id AS TEXT) AS value FROM test_table WHERE Id = 1 UNION ALL SELECT 'Name' AS key, Name AS value FROM test_table WHERE Id = 1 UNION ALL SELECT 'Age' AS key, CAST(Age AS TEXT) AS value FROM test_table WHERE Id = 1;
方法二:JSON函数动态转置(适合列多或不确定列的场景)
利用PostgreSQL的JSONB函数可以自动拆分整行数据为键值对,无需手动枚举每一列,灵活性更高:
SELECT key, value FROM test_table, jsonb_each_text(to_jsonb(test_table)) WHERE Id = 1;
两种方法执行后都会输出你需要的转置结果:
key value ---- ----- Id 1 Name abc Age 3
内容的提问来源于stack exchange,提问作者Aamir Khan
相关产品推荐
相关产品推荐

