У меня есть следующий запрос, который отлично работает:
SELECT TMP_CLPUD.dbo.FormatS(RIGHT(SV1.VASLOC, 7), 9, 0) AS C_ACCOUNT,
TMP_CLPUD.dbo.FormatS(Cust.C_CUSTOMER, 7, 0) AS C_CUSTOMER,
CA.OID,
CN2.NBCUNQ AS CUNQ,
CN2.NBSUNQ AS SUNQ,
'AC' AS C_STATUS,
TMP_CLPUD.dbo.mmsDATE(CN2.NBCNTE) AS IN_DATE,
TMP_CLPUD.dbo.mmsDATE(CN2.NBDSTE) AS OUT_DATE,
0 AS ARCHIVE
FROM BILLING.SVP00100 AS SV1 INNER JOIN BILLING.CNP00200 AS CN2 ON SV1.VASUNQ = CN2.NBSUNQ
INNER JOIN BILLING.CMP00100 AS CM1 ON CN2.NBCUNQ = CM1.KACUST
INNER JOIN BILLING.CustomerAccounts AS CA ON CM1.KACUST = CA.CustomerNbr
INNER JOIN TMP_CLPUD.dbo.tblCustomers As Cust ON CA.OID = Cust.OID
INNER JOIN BILLING.Customers AS C ON CA.OID = C.OID
INNER JOIN BILLING.CNP00100 AS CN1 ON CN2.NBCUNQ = CN1.NACUNQ AND CN2.NBSUNQ = CN1.NASUNQ
ORDER BY C_ACCOUNT, C_CUSTOMER
Однако, если я попытаюсь связать еще одно поле между CN1 и CN2, запрос будет зависать бесконечно.Поле имеет тип decimal (8,0) в обеих таблицах и не допускает пустых значений.Вот запрос с третьей ссылкой на месте:
SELECT TMP_CLPUD.dbo.FormatS(RIGHT(SV1.VASLOC, 7), 9, 0) AS C_ACCOUNT,
TMP_CLPUD.dbo.FormatS(Cust.C_CUSTOMER, 7, 0) AS C_CUSTOMER,
CA.OID,
CN2.NBCUNQ AS CUNQ,
CN2.NBSUNQ AS SUNQ,
'AC' AS C_STATUS,
TMP_CLPUD.dbo.mmsDATE(CN2.NBCNTE) AS IN_DATE,
TMP_CLPUD.dbo.mmsDATE(CN2.NBDSTE) AS OUT_DATE,
0 AS ARCHIVE
FROM BILLING.SVP00100 AS SV1 INNER JOIN BILLING.CNP00200 AS CN2 ON SV1.VASUNQ = CN2.NBSUNQ
INNER JOIN BILLING.CMP00100 AS CM1 ON CN2.NBCUNQ = CM1.KACUST
INNER JOIN BILLING.CustomerAccounts AS CA ON CM1.KACUST = CA.CustomerNbr
INNER JOIN TMP_CLPUD.dbo.tblCustomers As Cust ON CA.OID = Cust.OID
INNER JOIN BILLING.Customers AS C ON CA.OID = C.OID
INNER JOIN BILLING.CNP00100 AS CN1 ON CN2.NBCUNQ = CN1.NACUNQ AND CN2.NBSUNQ = CN1.NASUNQ AND CN2.NBCNTE = CN1.NACNTE
ORDER BY C_ACCOUNT, C_CUSTOMER
Я переписал эту вещь так много разных способов, как только мог подумать, но каждый раз, когда я пытаюсь связать это третье поле, оно просто зависает навсегда.Есть предложения?