select distinct
x.vrgid, x.Weights, x.geom
from
(select
-- postcodes.id as postcodeid ,,fishnet.geom as geom
fishnet.gid as vrgid,
fishnet.geom as geom,
CASE WHEN
st_intersects(centroids.geom, urban.geom) and counts.nonurbancells != 0
THEN 0.95 :: numeric / counts.urbancells -------1st case
WHEN st_intersects(centroids.geom, urban.geom) and counts.nonurbancells = 0
THEN 1.00 :: numeric / counts.urbancells ---2ndcase
WHEN Not st_intersects(centroids.geom, urban.geom) = fishnet.gid :: boolean and counts.nonurbancells != 0
THEN 0.05 :: numeric / counts.nonurbancells ----3rd case
ELSE 0
END AS Weights
from vrg.urban_nonurban_count_new as counts
inner join vrg.gfk_2016_id_5_digit_pcd_areas2013_projected as postcodes on postcodes.id = counts.postid
right outer join vrg.rdsid_86_quadgrid_centroids as centroids on st_contains(postcodes.geom, centroids.geom)
left outer join vrg.rdsid86_quadgrid AS fishnet on fishnet.gid = centroids.gid
right outer join vrg.rdsid86_katrisk_poly_projected as urban on st_intersects(urban.geom, fishnet.geom)
where postcodes.id = '42395') as x
У меня есть несколько операторов case в моей функции PL / Pgsql, в которых я получаю дублирующиеся строки (с дублирующимися vrgids).Ниже приведен результат запроса
Здесь (отмеченная строка) с идентификатором 7192 является результатом первого оператора case (см. Запрос). Я хотел бы использовать цикл использованияили если условие для удаления vrgid и соответствующих весовых коэффициентов из результата, если 1-й оператор case верен.Так что я не буду получать дубликаты записей.Как это возможно?
Может быть, я должен использовать условие в 3-м операторе, чтобы получить результат vrgids, отсутствующий в 1-м операторе case.