我试图在SQL中两次从同一个表中进行选择。
我有一个POLICIES表,它有一个引用自身的索引(NEXTPOLICYID)。
我需要将当前的保费与估计的保费进行比较。
如何获得在同一结果行上显示以下内容的结果?
t1 =当前 t2 =未来
End result should be:
t1.POLICIES_ID | t1.WRITTEN_PREMIUM | t2.POLICIES_ID | t2.ESTIMATED_PREMIUM
这就是我现在所拥有的,我在加入声明中收到错误,但我担心这不是我唯一的问题。
SELECT
t1.POLICIES_ID, t1.WRITTEN_PREMIUM, t1.NEXTPOLICYID, t2.ESTIMATED_PREMIUM
FROM
POLICIES t1 JOIN
POLICIES t2
ON t1.NEXTPOLICYID = t2.POLICIES_ID
我收到以下错误:
Message: odbc_exec(): SQL error: [Rocket U2][UVODBC][1401233]Error ID: 29 Severity: ERROR Facility: FPSRVERR - Line 5, column 17 (around "JOIN"): Syntax error., SQL state S1000 in SQLExecDirect
这是与uniVerse数据库的ODBC连接,我已经使用许多其他功能对其进行了测试,并且工作正常。这个错误告诉我它在JOIN语句之前不喜欢它。
谢谢
答案 0 :(得分:1)
此:
SELECT
t1.POLICIES_ID,
t1.WRITTEN_PREMIUM
t1.NEXTPOLICYID,
t2.ESTIMATED_PREMIUM,
t2.POLICIES_ID
FROM
POLICIES t1,
JOIN POLICIES t2 ON t1.NEXTPOLICYID = t2.POLICIES_ID
在错误的地方有逗号的问题,应该是:
SELECT
t1.POLICIES_ID,
t1.WRITTEN_PREMIUM,
t1.NEXTPOLICYID,
t2.ESTIMATED_PREMIUM,
t2.POLICIES_ID
FROM
POLICIES t1
JOIN POLICIES t2 ON t1.NEXTPOLICYID = t2.POLICIES_ID
我猜这是错误的原因。
答案 1 :(得分:1)
除了逗号之外,唯一的其他问题是:
t2.POLICIES_ID
列表中加入select
,因为您有t1.NEXTPOLICYID
left outer join
,以保留没有下一个政策的政策。查询可能是:
SELECT t1.POLICIES_ID, t1.WRITTEN_PREMIUM, t1.NEXTPOLICYID,
t2.ESTIMATED_PREMIUM
FROM POLICIES t1 JOIN
POLICIES t2
ON t1.NEXTPOLICYID = t2.POLICIES_ID;