2014-02-14 3 views
0

У меня есть запрос, который выглядит следующим образом:Как использовать группу, с помощью команды пересекаются в TSQL

SELECT COUNT(*) 
FROM members AS t1 
INNER JOIN data AS t2 
ON t1.ID = t2.ID 
WHERE members_id = 1 
INTERSECT 
SELECT COUNT(*) 
FROM members AS t1 
INNER JOIN data AS t2 
ON t1.ID = t2.ID 
WHERE members_id = 2 

Я хотел бы использовать группу, и порядок по командам, как это:

SELECT COUNT(*), var1 
FROM members AS t1 
INNER JOIN data AS t2 
ON t1.ID = t2.ID 
WHERE members_id = 1 
INTERSECT 
SELECT COUNT(*), var1 
FROM members AS t1 
INNER JOIN data AS t2 
ON t1.ID = t2.ID 
WHERE members_id = 2 
GROUP BY var1 
ORDER BY var1 

Однако я получаю сообщение об ошибке, указывающее, что var1 не содержится ни в агрегатной функции, ни в предложении GROUP BY. Любые советы по использованию GROUP BY и ORDER BY с помощью команды intersect?

Спасибо!

+0

Предложение - пожалуйста, введите код/​​sql скрипт, чтобы создать образец таблицы и вставить некоторые строки выборки. Это позволяет людям легко проверять свои ответы и помогать вам. Chenqui. –

ответ

0

Этот запрос вы пытаетесь достичь?

SELECT COUNT(*), var1 
FROM members AS t1 INNER JOIN 
    data AS t2 
    ON t1.ID = t2.ID 
GROUP BY var1 
having sum(case when members_id = 1 then 1 else 0 end) > 0 and 
     sum(case when members_id = 2 then 1 else 0 end) > 0 ; 

Это получает счет для каждого var1, который имеет оба члена.

+0

Добавление группы к верхнему элементу исключает сообщение об ошибке, однако подход Гордона намного чище. – JiggsJedi

+0

@JiggsJedi. , , Добавление «group by» в исходный запрос устранит сообщение об ошибке. И это, вероятно, также устранит результаты. Intersect рассматривает оба столбца, поэтому счет должен быть таким же. –

Смежные вопросы