#sql #postgresql #left-join
Вопрос:
У меня есть joa_clinics
таблица, в которой есть поле grouper_id
, и это поле отражено как pcp_grouper_id
в joa_sales
таблице. Что мне нужно, так это получить все значения в joa_sales
таблице с дополнительным динамическим столбцом joa
, который будет равен 0 или 1 в зависимости от того, имеет ли joa_sales
таблица pcp_gropuer_id
значение как null
или нет. Вот мой запрос до сих пор, но он генерирует синтаксическую ошибку при втором выборе:
SELECT * FROM joa_sales,
SELECT CASE WHEN g.GROUPER_ID IS NOT NULL THEN 1 ELSE 0 END AS JOA
FROM joa_clinics exp LEFT JOIN ( SELECT DISTINCT GROUPER_ID FROM joa_clinics ) g ON exp.PCP_GROUPER_ID = g.GROUPER_ID;
Может быть, мне даже не нужно ссылаться на таблицу joa_clinics, но я не знаю синтаксиса. Приведенный выше sql скопирован с синтаксиса SQL Server, но мой-сервер Postgresql.
Спасибо!
Комментарии:
1. Изменить, чтобы ВЫБРАТЬ ОТДЕЛЬНЫЙ ИДЕНТИФИКАТОР ГРУППЫ ИЗ joa_clinics
2. Опустите второе
SELECT
.3. Я пытался. Все равно получаю ошибку. Но позвольте мне еще немного изменить запрос. Спасибо.
4. Совет сегодняшнего дня: Переключитесь на современный, явный
JOIN
синтаксис везде . Легче писать (без ошибок), легче читать (и поддерживать), и легче конвертировать во внешнее соединение, если это необходимо.
Ответ №1:
Вот я думаю, что это сработает для меня. Соединение не требовалось:
SELECT * , CASE WHEN js.pcp_grouper_id IS NOT NULL THEN 1 ELSE 0 END AS JOA
FROM joa_sales js;