2013-05-07 4 views
1

У меня есть таблица, какSQL Query требуется

DEPT Years Subject 
ECE  1  Maths 
ECE  1  PDC 
EEE  1  Maths 
EEE  1  ET 
MEC  1  Maths 
MEC  1  ET 

Я хочу, чтобы запрос, чтобы найти все DEPT (отделы), в которых предметы повторяются, как математика в ЕЭК, EEE & MEC и ET повторен в EEE & MEC т.е. , только повторные те

Пожалуйста, советы,

+1

Можете ли вы сказать нам, что система конкретной базы данных это для, и то, что вы пробовали до сих пор? Где вы застряли? –

ответ

0

Попробуйте следующее:

select a.dept,a.Subject from tableName a,b where a.dept=b.dept 
+0

Это будет список всех строк, потому что они равны сами по себе. – Barmar

+0

интересно, но PDC не должен находиться в результирующем наборе – Terence

2
select * from table group by Subject having count(dept) > 1; 
+0

Столбец «dbo.test110.DEPT» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. –

0

Попробуйте следующий запрос:

SELECT dept, Subject FROM tableName WHERE Subject IN (SELECT Subject FROM tableName GROUP BY Subject HAVING COUNT(Subject)>1); 
0
select * from tabelname where subject in (select subject from tablename 
group by subject having count(subject) > 1)     
0

Вы можете попробовать это:

SELECT DEPT, Subject FROM Table1 WHERE Subject IN 
(SELECT Subject FROM Table1 GROUP BY Subject HAVING COUNT(Subject)>1); 

Живой пример здесь:

http://sqlfiddle.com/#!2/b5885/12

Выход следующим образом:

DEPT SUBJECT 
ECE   Maths 
EEE   Maths 
EEE   ET 
MEC   Maths 
MEC   ET 
0

TRY ЭТО

SELECT * FROM XYZ WHERE SUBJECT IN 
(SELECT SUBJECT FROM XYZ HAVING COUNT(SUBJECT)>1 
GROUP BY SUBJECT); 

ЗДЕСЬ КОНЕЦ ТАБЛИЦА

DEPT    YEAR SUBJECT 
---------- ---------- ---------- 
EEE     1 MATHS 
EEE     1 ET 
MEC     1 MATHS 
MEC     1 ET 
0
SELECT 
    DEPT, 
    Subject 
FROM tablename 
WHERE 
    Subject IN (
       SELECT [Subject] FROM (
             SELECT [Subject],count([Subject]) AS CountSubj FROM tablename GROUP BY [Subject] 
            ) AS subtbl 
       WHERE subtbl.CountSubj>1) 
ORDER BY Subject 

попытка выше SQL запроса.

0

Используйте вариант с EXISTS оператор

SELECT * 
FROM dbo.test110 t 
WHERE EXISTS (
       SELECT 1 
       FROM dbo.test110 t2 
       WHERE t.Subject = t2.Subject 
       HAVING COUNT(t2.Subject) > 1 
      ) 

Демонстрации на SQLFiddle