Синтаксис Postgresql для синтаксической ошибки, вызывающей левое соединение

#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;