gpt4 book ai didi

sql - 根据变量使用不同的子查询

转载 作者:行者123 更新时间:2023-11-29 12:51:52 24 4
gpt4 key购买 nike

我正在尝试更改表达式中使用的子查询,具体取决于我传递给 sql 的变量值。

我尝试了几种不同的方法,但都没有成功。下面的sql抛出错误:subquery must return only one column

WITH
sel_cells As (
SELECT
CASE WHEN cast (RIGHT( variable, 1 ) As int)>1 THEN (
SELECT part_2.geom, part_2.gridcode
FROM adm2 AS part_1, grid_1km_europe AS part_2
WHERE part_1.gid = 7224
AND ST_Intersects(part_1.geom, part_2.geom)
) ELSE (
SELECT part_2.geom, part_2.gridcode
FROM grid_1km_europe As part_2
INNER JOIN grid_1km_europe_adm2 As part_1
ON part_1.gridcode = part_2.gridcode
WHERE part_1.adm_gid = 7224
)
END
),
emissions_part As (
SELECT grid_id_1km, emissions_kg
FROM emissions
WHERE year_ = 2015 AND sector = 'Energy' AND pollutant = 'PM10'
)
SELECT
a.emissions_kg,
a.grid_id_1km,
b.geom
FROM emissions_part As a
INNER JOIN sel_cells As b
ON a.grid_id_1km = b.gridcode

我正在使用 Postgres。

正确的做法是什么?

感谢您的帮助!

最佳答案

你可以使用union all:

with sel_cells As (
select part_2.geom, part_2.gridcode
from adm2 AS part_1 join
grid_1km_europe as part_2
on ST_Intersects(part_1.geom, part_2.geom)
where part_1.gid = 7224 and
right(variable, 1)::int > 1
union all
select part_2.geom, part_2.gridcode
from grid_1km_europe As part_2 inner join
grid_1km_europe_adm2 As part_1
on part_1.gridcode = part_2.gridcode
where part_1.adm_gid = 7224 and
right(variable, 1)::int <= 1
)

关于sql - 根据变量使用不同的子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com