2014-08-28 4 views
0

Я пытаюсь извлечь те банки, которые содержат как Bunties, так и Candies.Получите отличные значения столбца1, которые содержат все необходимые значения столбца2

Row#  Column1   Columm2 
---------------------------------------  
1   Jar1    Bunties 
2   Jar1    Candies 
3   Jar1    Biscuits 
4   Jar1    Jellies 
5   Jar2    Bunties 
6   Jar2    Candies 
7   Jar2    Biscuits 
8   Jar3    Bunties 
9   Jar3    Candies 
10   Jar4    Bunties 
11   Jar4    Jellies 

Jar1,Jar2,Jar3 является требуемым выходом, потому что они являются единственными банками, которые содержат как Bunties и Candies.

ответ

1

Вы можете использовать GROUP BY с HAVING, чтобы получить результат:

select Column1 
from dbo.yourtable 
where Columm2 in ('Bunties', 'Candies') 
group by Column1 
having count(distinct Columm2) = 2; 

Ваш пункт WHERE будет включать в себя значения, которые ищут для, тогда вы GROUP BYColumn1 и подсчитываете отдельные значения в Columm2.

0
SELECT DISTINCT COLUMN1, COUNT(*) 
FROM TABLE 
WHERE COLUMN2 IN ('BUNTIES','CANDIES') 
HAVING COUNT(*)=2 
+1

Он хочет, чтобы всякий раз, когда данный 'Column1' ** ** не был одним из них. –

+0

@BernardoLima Ваш ответ не соответствует моему требованию, он также будет извлекать jar4, потому что он содержит Bunties. Но я хочу получить только те банки, в которых есть как булочки, так и конфеты. – user3310585

+0

@ user3310585, может ли одна банка иметь несколько записей для столбца 2? Например, у Jar3 есть две записи для конфет. – BernardoLima

1

Вы можете использовать EXISTS:

SELECT Distinct t.Column1 
FROM dbo.TableName t 
WHERE t.Columm2 IN ('Bunties', 'Candies') 
AND EXISTS(
    SELECT 1 FROM dbo.TableName t2 
    WHERE t2.Column1 = t.Column1 
    AND t2.Columm2 <> t.Columm2 
    AND t2.Columm2 IN ('Bunties', 'Candies') 
) 
+0

Эй, спасибо, что он работает в моем конце. @TimSchmelter, какова будет его производительность, если данные слишком длинны. Будет ли это влиять на всю производительность при извлечении данных? – user3310585

+0

@ user3310585: это зависит от ваших указателей. http://sqlserverplanet.com/indexes/sql-server-indexes-tutorial –

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