SQL Server - запрос возвращает дубликаты записей - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть следующий код:

select 
    b.ArpAccNo AS [Debtor no.]
    ,b.ArpAccName AS [Debtor name]
    ,a.TransDate
    ,d.InvoiceNumber
    ,a.ExtDocNo
    ,a.OrgAmt
    ,c.SettleAmt
    ,a.PostDate
    ,a.EqualisedPer
from 
    arptrans a 
inner join 
    ArpAccount AS b ON a.ArpAccId = b.ArpAccId
inner join 
    ArpEq AS c ON a.ArpTransId = c.CrArpTransId
inner join 
    JobInvoice AS d ON a.ArpAccId = d.DebtorId
where  
    a.CompId = '103'
    and ARPTransID IN (SELECT CrArpTransID 
                       FROM ArpEq 
                       WHERE ArpEq.EqDate >= '2019-03-21 00:00:00.000' 
                         AND ArpEq.EqDate <= '2019-03-31 00:00:00.000')

Этот запрос возвращает следующий набор данных:

enter image description here

Это дублирует записи много раз.

Я ищу совет, как лучше удалить эти дубликаты?

Вся помощь очень ценится.

1 Ответ

0 голосов
/ 25 апреля 2019

Здесь нет дубликатов, все шестнадцать строк имеют уникальные значения для всех столбцов по сравнению со всеми другими строками.

Я вижу один набор значений b.column, один набор значений a.values, четыре различных значения d.InvoiceNumber и четыре различных значения c.SettleAmt. Поскольку в этом запросе нет значений SUM, это будет означать, что (1 A / B строк) x (4 c строк) x (4 d строк) = 16, и в вашем возвращаемом наборе шестнадцать строк. Если вы запросите все таблицы для столбцов критериев JOIN, это, вероятно, докажет это.

Итак, просмотрите столбцы InvoiceNumber и SettleAmt и подробно объясните нам, как бы вы хотели, чтобы они отображались.

{edit} Другая возможность состоит в том, что в критериях JOIN..ON имеется жирный палец, или блок ON не содержит все столбцы, которые определяют уникальные отношения между таблицами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...