Для воспроизведения я создаю следующую временную таблицу и заполняю ее данными:
CREATE TABLE #TempActualsImport
(
AID INT NULL,
PostedDate NVARCHAR(255) NULL,
AccountingPeriod NVARCHAR(255) NULL,
JournalDate NVARCHAR(255) NULL,
JournalID NVARCHAR(255) NULL,
JournalDescription NVARCHAR(1000) NULL,
JournalLine INT NULL,
PaymentAmt NVARCHAR(255) NULL,
RelativeAmount NUMERIC(32,2) NULL,
IRSDuplicateRows BIT DEFAULT 0 NULL,
Recstamp Timestamp
)
Следующий запрос обновляет временную таблицу на основе следующих критериев, чтобы найти дубликаты, называемые дубликатами IRS.
UPDATE #TempActualsImport
SET IRSDuplicateRows = 1
WHERE AID IN (SELECT t1.AID
FROM #TempActualsImport t1, #TempActualsImport t2
WHERE t1.PostedDate = t2.PostedDate
AND t1.AccountingPeriod = t2.AccountingPeriod
AND t1.JournalDate = t2.JournalDate
AND t1.JournalID = t2.JournalID
AND t1.JournalDescription = t2.JournalDescription
AND t1.JournalLine = t2.JournalLine
AND t1.PaymentAmt = t2.PaymentAmt
AND t1.RelativeAmount = t2.RelativeAmount
AND CONVERT(DATE, t1.PostedDate) = '2018-10-03'
AND t1.RelativeAmount = 0
AND t1.AID = t2.AID)
Следующий запрос выполняется к временной таблице:
SELECT
AID, PostedDate, AccountingPeriod,
JournalDate, JournalID, JournalDescription, JournalLine, PaymentAmt,
RelativeAmount, IRSDuplicateRows
FROM
#TempActualsImport
WHERE
IRSDuplicateRows = 1
Следующие две строки помечены как дубликаты, но ясно, что JournalLine (7-й столбец в) НЕ соответствуетэти две записи.
589 20181003 4 20181002 PR00154645 10/02/2018 Payroll 8399
0.00 1
808 20181003 4 20181002 PR00154645 10/02/2018 Payroll 15888
0.00 1
Я ожидаю, что эти две записи не будут отображаться как дубликат IRS, поскольку столбец JournalLine не совпадает.Что я делаю неправильно?
Я проверил это на SQL Server 2008 R2 и SQL Server 2016 с такими же результатами.
Вот некоторые примеры данных для заполнения #TempActualsImport:
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (589, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 8399, N'', CAST(0.00 AS Numeric(32,
2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (711, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12486, N'', CAST(1846.96 AS
Numeric(32, 2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (712, N'20181003', N'4',
N'20181002', N'PR00154645', N'10/02/2018 Payroll', 12487, N'', CAST(169.33
AS Numeric(32, 2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (713, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12488, N'', CAST(205.46 AS Numeric(32,
2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (714, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12489, N'', CAST(121.95 AS Numeric(32,
2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (715, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12490, N'', CAST(19.48 AS Numeric(32,
2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (716, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12663, N'', CAST(1538.85 AS
Numeric(32, 2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (717, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 12664, N'', CAST(13.57 AS Numeric(32,
2)))
GO
INSERT [#TempActualsImport] ([AID], [POSTEDDate], [AccountingPeriod],
[JournalDate], [JournalID], [JournalDescription], [JournalLine],
[PaymentAmt], [RelativeAmount]) VALUES (808, N'20181003', N'4', N'20181002',
N'PR00154645', N'10/02/2018 Payroll', 15888, N'', CAST(0.00 AS Numeric(32,
2)))
GO