PostgreSQL 交叉表查询从帮助查询中提取列
Posted
技术标签:
【中文标题】PostgreSQL 交叉表查询从帮助查询中提取列【英文标题】:PostgreSQL crosstab query pulling columns from a helper query 【发布时间】:2012-06-17 18:33:45 【问题描述】:我的 Postgres 交叉表查询如下:
SELECT mthreport.*
FROM crosstab
('SELECT
to_char(ipstimestamp, ''mon DD HH24h'') As row_name,
varid::text || log.varid || ''_'' || ips.objectname::text As bucket,
COUNT(*)::integer As bucketvalue
FROM loggingdb_ips_boolean As log
INNER JOIN IpsObjects As ips
ON log.Varid=ips.ObjectId
GROUP BY to_char(ipstimestamp, ''yyyy MM DD HH24h''), row_name, bucket
ORDER BY to_char(ipstimestamp, ''yyyy MM DD HH24h''), row_name, bucket')
As mthreport(item_name text,
jan3 integer, feb4 integer, mar5 integer)
有什么方法可以从辅助查询中提取最后一行(jan3 integer
等)中列举的三个项目?我试图用SELECT xyz FROM zyx
替换最后一行,但这不起作用。
【问题讨论】:
你有答案吗? 【参考方案1】:在查询的基本形式中,您必须拼出调用SELECT
中的列名和类型。
crosstabN(text)
变体使用预定义的返回类型。
为了实现完全自动化,您必须将每个单独的查询包装到一个函数中,您可以在其中预定义返回类型。我贴了一个详细的例子here。
【讨论】:
以上是关于PostgreSQL 交叉表查询从帮助查询中提取列的主要内容,如果未能解决你的问题,请参考以下文章