2015-01-08 6 views
0

Я работаю в SQL Server 2008. У меня 2 запроса. Первый:Compare 2 набора результатов

SELECT 
col1, 
col2 
FROM tableA 

Типичный набор результатов этого запроса:

col1 col2

facilityA 10

facilityB 20

второй из них:

SELECT 
colx, 
COUNT(*) AS 'Totals' 
FROM tableB 
GROUP BY colx 

Типичный результат выполнения этого запроса:

colx Итоговые

facilityA 10

facilityB 50

Я хочу, чтобы вернуть все записи в первом наборе результатов, где значения различны между col2 и Totals из второго набора результатов для соответствующих значений между col1 и colx. Например, в данном примере должен возвращать:

col1 col2

facilityB 20

Как этого добиться?

ответ

1

Похоже, вы хотите использовать EXCEPT clause. Это будет сравнивать столбцы каждой строки по столбцам и если существует идентичная строка между двумя наборами данных:

SELECT col1, col2 
FROM tableA 

EXCEPT 

SELECT colx, COUNT(*) AS 'Totals' 
FROM tableB 
GROUP BY colx 
Смежные вопросы