交叉表查询可以在什么条件下有日期?
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);
我正在对我的数据使用交叉表查询。但是现在我需要根据日期过滤日期,然后在交叉表中转换。但我认为这是不可能的。我还阅读了 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);