这段代码在PostgreSQL 9.3中导致语法错误有什么问题

时间:2018-01-03 07:13:21

标签: sql postgresql lateral

下面是我编写的一段SQL代码。我想将两个记录合并到一个记录中,其中第一个记录域显示为"来自源"并且第二个记录的域名变为“域名”#34;。我需要做更多的过滤,但为什么这个简单的陈述不起作用?

我收到错误"输入结束时的语法错误"

*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 个答案:

答案 0 :(得分:0)

我认为您仍然需要ON条款,因为它是INNER JOIN。如果您不想指定ON条款,我认为您可以使用CROSS JOIN代替。

E.g。

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

答案 1 :(得分:0)

我认为你过于复杂了。表的简单自连接就足够了。您不需要派生表来重命名列

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