Что не так с этим кодом, который вызывает синтаксическую ошибку в PostgreSQL 9.3

Ниже приведен фрагмент кода SQL, который я написал. Я хочу объединить две записи в одну запись, где первый домен записи отображается как "Из источника", а домен второй записи становится "В домен". Мне нужно будет больше фильтровать, но почему это простое утверждение не работает?

Я получаю сообщение об ошибке "Синтаксическая ошибка в конце ввода"

*SELECT 
   "ID" , "Time",  "Source Domain", "To Domain" From
   (SELECT "RecordID" As "ID","UTCTimestamp" As "Time","Domain" As "Source Domain" FROM public."Traffic - Mobile")T1
   Inner Join Lateral
   (SELECT "Domain" As "To Domain" FROM public."Traffic - Mobile" where "RespondentID"="T1"."RespondentID" )T2*

заранее спасибо

PostgreSQL версия 9.3

2 ответа

Решение

Я думаю, вы слишком усложняете это. Достаточно простого самостоятельного объединения таблицы. Вам не нужна производная таблица для переименования столбца

SELECT "ID", "Time", t1."Domain" as "Source Domain", t2."Domain" as "To Domain" 
from public."Traffic - Mobile" as t1
  join public."Traffic - Mobile" as t2 on t2."RespondentID" = t1."RespondentID";

Я думаю, что вам все еще нужно ON пункт, так как это INNER JOIN, Если вы не хотите указывать ON пункт, я думаю, вы могли бы использовать CROSS JOIN вместо.

Например

SELECT 
   "ID" , "Time",  "Source Domain", "To Domain" From
   (SELECT "RecordID" As "ID","UTCTimestamp" As "Time","Domain" As "Source Domain"
          FROM public."Traffic - Mobile")T1
   Inner Join Lateral
   (SELECT "Domain" As "To Domain" FROM public."Traffic - Mobile"
           where "RespondentID"="T1"."RespondentID" )T2
    ON true
Другие вопросы по тегам