我正在创建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