KINGBASE 数据库是基于PostgreSQL内核研发的国产数据库,在应用开发过程中想使用列转行函数,发现KINGBASE V7版本没有,PostgreSQL 列转行函数试试STRING_AGG。没有没关系,我们可以自定义函数来实现列转行,高版本的KINGBASE会支持列转行函数。
--创建测试表
CREATE TABLE TESTHAHA(ID INT,DATA_TIME TIMESTAMP, VALUE NUMBER(3,0));
--插入测试数据
INSERT INTO TESTHAHA VALUES(1,'2020-01-16 00:10:00',1),(2,'2020-01-17 00:20:00',2),(1,'2020-01-18 00:30:00',3),(2,'2020-01-19 00:40:00',4);
--创建转换函数
--创建AGGREGATE函数 实现列转行
--调用行转列函数
SELECT ID,STRING_AGG(to_char(DATA_TIME,'YYYY-MM-DD HH24:MI:SS'),','),STRING_AGG(TO_CHAR(VALUE,'9999D9999'),',') FROM TESTHAHA GROUP BY ID;
--GROUP BY 后可加having 语句再次进行过滤,TO_CHAR可以设置结果输出格式,参考金仓手册。
参考BLOG:http://blog.itpub.net/16674653/viewspace-775880/
官方网站:https://www.postgresql.org/docs/9.2/sql-createaggregate.html