使用If或Case的条件连接语句

时间:2020-02-21 07:58:11

标签: if-statement left-join case

我需要有条件地左联接同一张表, 本质上,我的On语句需要根据是否涉及保险公司来匹配保险公司或客户,但是由于我检索信息的方式,相对列的位置无法更改。

这是我需要运行的两个语句 保险公司发票

Left Join Public.Invoices  INV ON INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.InsNum 

客户发票

Left Join Public.Invoices  INV  ON INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.PK_Customer

所以我尝试了这个IF语句,但是在IF上出现错误

IF QSM.InsNum <> 0
    Left Join Public.Invoices  INV ON INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.InsNum 
    Else 
 Left Join Public.Invoices  INV  ON QSM.InsNum = 0 AND INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.PK_Customer 
    END

这是我完整陈述的子集

SELECT DISTINCT ON (QSM.PK_QuoSum) 
    QSM.PK_QuoSum , QSM.PK_Customer , QSM.PK_CarCust , QSM.InsNum , QSM.nDate 
    CUS.FName ,CUS.SName , CUS.Phone1 , CUS.EMail, 
    INV.nDate, 

    From Public.QuoSum          QSM 
    Left Join Public.Customer   CUS       ON  CUS.PK_Customer = QSM.PK_Customer 
IF QSM.InsNum <> 0
    Left Join Public.Invoices  INV ON INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.InsNum 
    Else 
 Left Join Public.Invoices  INV  ON QSM.InsNum = 0 AND INV.PK_QuoSum = QSM.PK_QuoSum And INV.nDebtor = QSM.PK_Customer 
    END

0 个答案:

没有答案