Postgresql 查询中的Heroku dataclip变量替换
我想在查询的顶部设置一些参数/变量,并在Heroku Dataclips的复杂查询中的多个位置使用它们。 下面是一个简单的例子:Postgresql 查询中的Heroku dataclip变量替换,postgresql,heroku,heroku-postgres,Postgresql,Heroku,Heroku Postgres,我想在查询的顶部设置一些参数/变量,并在Heroku Dataclips的复杂查询中的多个位置使用它们。 下面是一个简单的例子: WITH vars AS ( SELECT '2018-01-07' AS calcdate, 12345 AS salary ) select * from taxes where country_alpha3='USA' and year='2018' and active=true and subdivision_code='US-MEDI' a
WITH vars AS ( SELECT
'2018-01-07' AS calcdate,
12345 AS salary
)
select *
from taxes
where country_alpha3='USA' and year='2018' and active=true
and subdivision_code='US-MEDI'
and local_code is null
and start_date <= DATE(vars.calcdate) and end_date >= DATE(vars.calcdate)
and lower_amount_cents <= vars.salary and upper_amount_cents >= vars.salary;
我在2013年的另一个答案中看到了这种风格的代码,但到今天为止,它在实际的数据剪辑中还不起作用
Error: Your query couldn't be updated.
ERROR: missing FROM-clause entry for table "vars"
LINE 12: and start_date <= DATE(vars.calcdate) and end_date >= DATE(v...
^
如果将vars.calcdate和vars.salary更改为常量,则SQL可以正常工作。这和vars有关。语法或用法,我想。我找到了解决方案。就像我想象的那样。vars.name的格式是不允许的,我不确定在哪里看到的
WITH vars AS ( SELECT
DATE('2018-01-07') AS calcdate,
12345 AS salary
)
select *
from taxes
where country_alpha3='USA' and year='2018' and active=true
and subdivision_code='US-MEDI'
and local_code is null
and start_date <= (SELECT calcdate from vars) and end_date >= (SELECT calcdate from vars)
and lower_amount_cents <= (SELECT salary from vars) and upper_amount_cents >= (SELECT salary from vars);
为什么不呢?女巫错误?这是posgres允许cte的标准sql。使用错误消息和精确sql进行编辑