我正在对我的数据使用交叉表查询。但是现在我需要根据日期过滤日期,然后在交叉表中转换。但我认为这是不可能的。我还阅读了 postgresql 文档,但没有发现任何与之相关的内容。有人可以确认吗?以下是我尝试运行但给出错误的查询:
SELECT * FROM crosstab('SELECT a.name, al.type, COALESCE(sum(a.amt),0) as amt FROM account a where date(a.vdate)>='07-30-2017' and date(a.vdate)<='08-31-2017' group by a.name, a.type order by a.name',$$VALUES ('type1'), ('type2')$$) AS ct ("name" text, "type1" decimal, "type2" decimal))
当我在它工作的地方使用没有日期的时候。
提前致谢。
最佳答案
对第一个查询使用美元引号,就像您对第二个查询所做的那样:
SELECT *
FROM crosstab($$
SELECT a.name, a.type, COALESCE(sum(a.amt),0) as amt
FROM account a
WHERE date(a.vdate)>='07-30-2017' and date(a.vdate)<='08-31-2017'
GROUP BY a.name, a.type
ORDER BY a.name
$$,
$$
VALUES ('type1'), ('type2')
$$
) AS ct ("name" text, "type1" decimal, "type2" decimal);
关于postgresql - 交叉表查询可以在什么条件下有日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438434/