#sql #postgresql #unpivot
#sql #postgresql #отключите
Вопрос:
Я очень новичок в postgresql и был бы очень признателен за любую помощь. В настоящее время я использую этот скрипт (он работает нормально):
FROM dataset as d
LEFT JOIN metric m on d.datasetid=m.datasetid
LEFT JOIN value v on m.metricid=v.metricid
LEFT JOIN submetric_1 s1 ON v.submetric_1id=s1.submetric_1id
LEFT JOIN submetric_2 s2 ON v.submetric_2id=s2.submetric_2id
LEFT JOIN year y on v.valueid=y.valueid
LEFT JOIN quarter q on v.valueid=q.valueid
LEFT JOIN country c on v.valueid=c.valueid
LEFT JOIN region r on v.valueid=r.valueid
LEFT JOIN county co on v.valueid=co.valueid
LEFT JOIN ladistrict l on v.valueid=l.valueid
Этот скрипт возвращает столбцы из предложения SELECT следующим образом:
значение показателя […] страна регион округ округ
Мне нужно отключить четыре последних географических столбца «страна», «регион», «округ» и «округ», чтобы получить возврат следующим образом:
значение показателя […] География Название географии
Country Country name
Region Region name
County County name
Ladistrict Ladistrict name
Я пытаюсь использовать предложение LATERAL следующим образом:
FROM dataset as d
LEFT JOIN metric m on d.datasetid=m.datasetid
LEFT JOIN value v on m.metricid=v.metricid
LEFT JOIN submetric_1 s1 ON v.submetric_1id=s1.submetric_1id
LEFT JOIN submetric_2 s2 ON v.submetric_2id=s2.submetric_2id
LEFT JOIN year y on v.valueid=y.valueid
LEFT JOIN quarter q on v.valueid=q.valueid
LEFT JOIN LATERAL (VALUES
('Country',c.country)
,('Ladistrict', l.ladistrict)
,('Region', r.region)
, ('County',co.county))
s (Geography, geo_name)
И это возвращает ошибку. Пожалуйста, есть идеи, как заставить это работать и отключить эти поля? Спасибо
Комментарии:
1. Пожалуйста, добавьте пример вывода первого запроса и желаемый результат
Ответ №1:
Для левого соединения требуется условие соединения. Это может быть так просто, как ON TRUE
. Однако проще просто изменить это левое боковое соединение на поперечное боковое соединение.