pgsql不固定列数的行转列怎么写sql
近期遇到一个需求,需要根据物品类型按照日期进行行转列,因为日期不确定,所以行转后的列也是不确定的,这种sql怎么写?
转换前的数据
转换后想要的数据
用pivot做
这种用高级语言一个循环搞定的事情,就不要折腾sql了
SELECT
pid,
datname,
usename,
client_addr,
application_name,
STATE,
backend_start,
xact_start,
xact_stay,
query_start,
query_stay,
REPLACE ( query, chr( 10 ), ' ' ) AS query
FROM
(
SELECT
pid,
pgsa.datname AS datname,
pgsa.usename AS usename,
pgsa.client_addr client_addr,
pgsa.application_name AS application_name,
pgsa.STATE AS STATE,
pgsa.backend_start AS backend_start,
pgsa.xact_start AS xact_start,
EXTRACT (
epoch
FROM
( now() - pgsa.xact_start )) AS xact_stay,
pgsa.query_start AS query_start,
EXTRACT (
epoch
FROM
( now() - pgsa.query_start )) AS query_stay,
pgsa.query AS query
FROM
pg_stat_activity AS pgsa
WHERE
pgsa.STATE != 'idle'
AND pgsa.STATE != 'idle in transaction'
AND pgsa.STATE != 'idle in transaction (aborted)'
) idleconnections
ORDER BY
query_stay DESC
LIMIT 50;