Условные операторы соединения с использованием If или Case - PullRequest
0 голосов
/ 21 февраля 2020

Мне нужно условно оставить присоединиться к той же таблице. По сути, мое заявление «Вкл» должно соответствовать либо страховой компании, либо клиенту, исходя из того, участвует ли страховая компания или нет, но из-за того, как я получаю информацию об относительных позициях столбца невозможно изменить.

Это два оператора, которые мне понадобятся для выставления счета страховой компании

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
...