SQL从表中选择两次

SQL从表中选择两次,sql,join,Sql,Join,我试图在SQL中两次从同一个表中进行选择 我有一个策略表,它有一个引用自身的索引(NEXTPOLICYID) 我需要将当前保费与估计保费进行比较 如何获得在同一结果行上显示以下内容的结果 t1=电流 t2=未来 End result should be: t1.POLICIES_ID | t1.WRITTEN_PREMIUM | t2.POLICIES_ID | t2.ESTIMATED_PREMIUM 这就是我现在的情况,我的join语句有一个错误,但我担心这不是我唯一的问题 SELECT

我试图在SQL中两次从同一个表中进行选择

我有一个策略表,它有一个引用自身的索引(NEXTPOLICYID)

我需要将当前保费与估计保费进行比较

如何获得在同一结果行上显示以下内容的结果

t1=电流 t2=未来

End result should be:

t1.POLICIES_ID | t1.WRITTEN_PREMIUM | t2.POLICIES_ID | t2.ESTIMATED_PREMIUM
这就是我现在的情况,我的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
我得到以下错误:

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语句之前的内容

谢谢你

这是:

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

我猜这就是错误的原因。

除了逗号之外,唯一的问题是:

  • 您不需要在
    select
    列表中包含
    t2.POLICIES\u ID
    ,因为您有
    t1.NEXTPOLICYID
  • 您可能需要考虑<代码>左外部连接< /代码>,以保留没有下一个策略的策略。
查询可能是:

 SELECT t1.POLICIES_ID, t1.WRITTEN_PREMIUM, t1.NEXTPOLICYID,
        t2.ESTIMATED_PREMIUM
 FROM POLICIES t1 JOIN
      POLICIES t2
      ON t1.NEXTPOLICYID = t2.POLICIES_ID;

在t1后面加一个逗号。谢谢你,我已经修改了我的SQL,我仍然得到一个错误;有什么想法吗?我很有信心这个问题与我使用ODBC连接有关。我用另一个数据库直接在MSSMS中测试了这一点,效果很好。可能SQL结构略有不同,需要不同的语法?@Evalue。如果您明确指定
内部联接
,它是否仍然存在问题?谢谢您的帮助。您的解决方案在我当前项目之外的类似测试用例场景中运行良好。真正的问题是我提供的ODBC驱动程序设置的限制。它根本不支持某些SQL函数。