2016-02-18 2 views
0

Я две таблицысравнительную таблицу и найти элементы с не соответствующими подсчет

Table1

enter image description here

И TABLE2

enter image description here

Теперь я хочу, чтобы те RequestId и подсчет этих RequestID из Table1, которые отличаются от таковой Table2, например, выход должен быть

enter image description here

можно получить индивидуальный подсчет и RequestID из обоего таблиц по следующему запросу:

select RequestId, Count(RequestId) AS [Count] from Table1 group by RequestId 

Но как сравнить обе таблицы в одном запросе, Любая помощь будет хорошей, и было бы хорошо, если бы цикл не выполнялся до тех пор, пока его единственный способ сделать это, поскольку в обеих таблицах много записей общие здесь только для понимания.

ответ

0

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

select t1.RequestId, (t1.Count - t2.Count) as count 
from 
(select RequestId, Count(RequestId) AS [Count] from Table1 group by RequestId)t1 
left join(select RequestId, Count(RequestId) AS [Count] from Table2 group by RequestId)t2 
on t1.RequestId = t2.RequestId 
where t1.Count <> t2.Count 
1

Вы должны использовать свои запросы как подзапросы в FROM. Таблица внешнего соединения2, поскольку в нем нет строк для всех идентификаторов запроса:

select t1.requestid, t1.cnt - coalesce(t2.cnt, 0) as diff 
from (select requestid, count(*) as cnt from table1 group by requestid) t1 
left join (select requestid, count(*) as cnt from table2 group by requestid) t2 
    on t2.requestid = t1.requestid 
where (t1.cnt - coalesce(t2.cnt, 0)) > 0; 
Смежные вопросы