SQL-запрос для создания соответствия, вызывающий дубликаты, которых невозможно избежать - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...