SQL查询创建匹配项导致重复项无法避免

时间:2019-04-17 15:41:13

标签: sql duplicates unique

我正在创建SQL查询以将其从登台表匹配到Dynamics GP表。我创建的查询可以满足我90%的需求,但项目编号和行号相同时除外。在诸如LNITMSEQ和BoeingInvNmbr这样的行上有唯一的值,但是我仍然无法获得2行vs 4行,其中2行是重复的。其中一张表中的行号是X.X,我必须创建一个PATINDEX来删除.X以加入PoLineNmbr。

我尝试过使用DISC,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

0 个答案:

没有答案