Я создаю SQL-запрос для сопоставления из промежуточной таблицы в таблицу Dynamics GP.Созданный мной запрос работает на 90% от того, что мне нужно, за исключением случаев, когда номер элемента и номер строки совпадают.В строках есть уникальные значения, такие как LNITMSEQ и BoeingInvNmbr, но я все еще не могу получить 2 строки против 4 строк, 2 из которых являются дубликатами.Строка # в одной из таблиц - XX, и мне пришлось создать PATINDEX для удаления .X для соединения с PoLineNmbr.
Я пробовал DISTINCT, GROUP BY, используя CTE, различные объединенияи т. д. Без ожидаемого результата.
SELECT A.SOPNUMBE
,A.SOPTYPE
,A.CUSTNMBR
,B.BoeingPONmbr
,A.CSTPONBR
,D.ITEMNMBR
,B.PartNmbr
,D.QUANTITY AS GPQTY
,D.QTYTOINV
,D.QTYFULFI
,B.Quantity AS BQTY
,b.BoeingInvoiceNmbr
,B.InvGrossAmt
,D.XTNDPRCE
,D.LNITMSEQ
,DENSE_RANK() OVER (
ORDER BY A.SOPNUMBE ASC
) AS SOP_Rank
FROM ZSWIN..SOP10100 A
LEFT JOIN Integration..BoeingInvoices B ON A.CSTPONBR = B.BoeingPONmbr
LEFT JOIN ZSWIN.dbo.adv_SalesTransactionEntry_CPO C ON A.MSTRNUMB = C.MSTRNUMB
AND SUBSTRING([Line #], PATINDEX('%[0-9]%', [Line #]), PATINDEX('%[0-9][^0-9]%', [Line #] + 't') - PATINDEX('%[0-9]%', [Line #]) + 1) = B.POLineNmbr -- altered line# to remove .X
LEFT JOIN ZSWIN..SOP10200 D ON C.LNITMSEQ = D.LNITMSEQ
AND A.SOPNUMBE = D.SOPNUMBE
WHERE A.SOPTYPE = 2
AND D.QTYTOINV = D.QTYFULFI
AND D.QTYTOINV = B.Quantity
AND A.SOPNUMBE NOT IN (
SELECT SOPNUMBE
FROM GPBoeingMatch
)
AND b.BoeingPONmbr = '1561870'
Expected Results:
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009294850 632.00 632.00000 16384 1
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009453604 632.00 632.00000 32768 1
Actual Results:
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009294850 632.00 632.00000 16384 1
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009453604 632.00 632.00000 32768 1
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009294850 632.00 632.00000 16384 1
DS-19027 2 BOEING 1561870 1561870 895-00008-0400 895-00008-0400 8 8 8 8 0009453604 632.00 632.00000 32768 1