Я очень новичок в SQL, MS Access & PostgreSQL. Мне очень быстро дали эту задачу. Сначала я прочитал основные синтаксисы SQL, а затем написал это только с логикой. Каким-то образом я получаю эту ошибку: SELECT
Как получить правильный оператор SELECT в SQL?
[]
В таблице и имена столбцов являются правильными. Вот краткое описание того, что моей целью является
SELECT
change_incoming_area AS Bodenfläche,
CASE
WHEN change_type_id = 2
AND (NOT cng.city_old_id=cng.city_new_id
AND EXTRACT(YEAR FROM cng.date_change) = EXTRACT(YEAR FROM tb_city_annual_population.population_year)) THEN
ROUND((cng.change_incoming_area/SELECT pop.city_area FROM tb_city_annual_population pop WHERE pop.city_id=cng.city_old_id)*100,2)
WHEN change_type_id = 2
AND (cng.city_old_id=cng.city_new_id
AND EXTRACT(YEAR FROM cng.date_change) = EXTRACT(YEAR FROM tb_city_annual_population.population_year)
AND cng.change_incoming_area<SELECT pop.city_area FROM tb_city_annual_population pop WHERE pop.city_id=cng.city_old_id) THEN
ROUND(((SELECT pop.city_area FROM tb_city_annual_population pop WHERE pop.city_id=cng.city_old_id AS origarea-cng.change_incoming_area)/origarea)*100,2)
WHEN change_type_id = 2
AND (cng.city_old_id=cng.city_new_id
AND EXTRACT(YEAR FROM cng.date_change) = EXTRACT(YEAR FROM tb_city_annual_population.population_year)
AND ((cng.change_incoming_area+SELECT pop.city_area FROM tb_city_annual_population pop WHERE pop.city_id=cng.city_old_id AS origarea3)/origarea3)*100>100) THEN
ROUND(((cng.change_incoming_area+SELECT pop.city_area FROM tb_city_annual_population pop WHERE pop.city_id=cng.city_old_id AS origarea2)/origarea2)*100,2)
ELSE 100
END
FROM tb_change cng;
Синтаксические ошибки. SELECT внутри другого SELECT (т. Е. Подзапроса) должен быть заключен в круглые скобки. – jarlh
Трудно понять, что вы пытаетесь сделать. Возможно, вы могли бы сделать JOIN вместо всех этих подзапросов? – jarlh
Упростите, пока не сработает. Тогда вы знаете, где проблема, и можете сосредоточиться на этом. –