Microsoft SQL Server: необходимо сравнить два набора результатов - PullRequest
1 голос
/ 28 марта 2019

У меня есть два запроса, каждый из которых дает мне список заказов и количество позиций в каждом заказе.Мы переносим системы, и одна из источника, а другая из цели.Мне нужно провести некоторую проверку между ними.

Я хочу сравнить их так, чтобы мой результат представлял собой список заказов, в которых количество строк не совпадает.Если в цели должен быть ордер, но его нет, он также должен появиться в списке.

Я боролся с этим целый день и не могу понять, как к нему приблизиться.

Помощь будет признательна!

Вот два запроса:

ИСТОЧНИК ЗАПРОС

select s.oNum, count(s.oNum) 
  from SourceTbl s
    left join PK_Master pk
      on pk.Num = s.oNum
  where s.oNum not in (select ordernum from tmpSalesOrders)
  group by s.oNum
order by s.oNum

ЦЕЛЕВОЙ ЗАПРОС

select p.oNum, count(p.oNum) 
  from BridgeTbl p
    left join TargetTbl t 
      on p.ToNum = t.orderID
  group by p.oNum
order by p.oNum

SourceTable - это расширенный набор, а PK_Master и tmpSalesOrders используются для уточнения порядков, которые СЛЕДУЕТ переносить.

В BridgeTbl есть поле с именем SoNum, которое = s.oNum для связи источника и цели.

Мне нужен номер заказа источника (s.oNum) в наборе результатов.

1 Ответ

2 голосов
/ 28 марта 2019

Бросить EXCEPT между этими двумя запросами и позволить разорваться. Это скажет вам записи, которые выводятся вашим первым запросом, которых нет во втором запросе.

select s.oNum, count(s.oNum) 
  from SourceTbl s
    left join PK_Master pk
      on pk.Num = s.oNum
  where s.oNum not in (select ordernum from tmpSalesOrders)
  group by s.oNum
order by s.oNum

EXCEPT

select p.oNum, count(p.oNum) 
  from BridgeTbl p
    left join TargetTbl t 
      on p.ToNum = t.orderID
  group by p.oNum
order by p.oNum

EXCEPT является «Оператором установки». В TSQL вы можете установить UNION, UNION ALL, EXCEPT и INTERSECT.

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