#sql #duplicates #unique
#sql #дубликаты #уникальный
Вопрос:
Я создаю SQL-запрос для сопоставления промежуточной таблицы с таблицей Dynamics GP. Созданный мной запрос работает на 90% того, что мне нужно, за исключением случаев, когда номер элемента и строка # совпадают. В строках, таких как LNITMSEQ и BoeingInvNmbr, есть уникальные значения, такие как LNITMSEQ и BoeingInvNmbr, но я все еще не могу получить 2 строки против 4 строк, 2 из которых являются дубликатами. Строка # в одной из таблиц — X.X, и мне пришлось создать 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
Комментарии:
1. Не могли бы вы предоставить некоторые примеры данных?
DISTINCT
должно работать.2. distinct — единственное решение!!!!
3. @D-Shih Образец данных о том, что находится во всех трех таблицах? Например, вставка / значения для каждого из них для этого конкретного примера…
4. Любые другие предложения !?