交叉表查询可以在什么条件下有日期?

crosstab query can have date in where condition?

我正在对我的数据使用交叉表查询。但是现在我需要根据日期过滤日期,然后在交叉表中转换。但我认为这是不可能的。我还阅读了 postgresql 文档,但没有发现任何与 it.Can 相关的内容。有人证实了吗?以下是我尝试 运行 但给出错误的查询:

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);