2016-07-13 81 views
0

我正在使用SQL Server 2012,需要一些幫助來獲取查詢中需要的結果。我的數據是這樣的:數據庫記錄具有所有值

ConsumerID Tag 
1000028041 bBROAapp 
1000028041 bBROtiva 
1000028041 bClsElig 
1000028041 bPCAFwd 
1000028041 bTOPNoRs 
1000028041 bTOPNwRq 
1000028041 bTOPActv 

,我想選擇一個給定的ConsumerID只有當他們擁有所有我在尋找一個標記值。

例如,這個選擇的所有記錄與任何3個標籤:

SELECT ConsumerID 
FROM BorrowerTags 
WHERE Tag IN('bBROAapp', 'bBROtiva'); 

結果:

1000028041 bBROAapp 
    1000028041 bBROtiva 

這不返回任何結果

SELECT ConsumerID 
FROM BorrowerTags 
WHERE Tag = 'bBROAapp' 
     AND Tag = 'bBROtiva'; 

沒有結果

我上我希望那些消費者身份都有價值的記錄 - 不是任何一個。

感謝

回答

2

我想選擇一個給定的ConsumerID只有當他們擁有所有的標籤值

你可以使用:

SELECT ConsumerID 
FROM BorrowerTags 
WHERE Tag IN ('bBROAapp', 'bBROtiva') 
GROUP BY ConsumerID 
HAVING COUNT(DISTINCT Tag) = 2; 

LiveDemo


如果你想爲消費者整個的記錄,你可以使用:

SELECT * 
FROM BorrowerTags 
WHERE ConsumerID IN (... above query ...) 
+1

非常涼。謝謝 – user3641053

0

您可以使用INTERSECT讓你期望的結果:

SELECT DISTINCT ConsumerID FROM BorrowerTags WHERE Tag = 'bBROAapp' 
INTERSECT 
SELECT DISTINCT ConsumerID FROM BorrowerTags WHERE Tag = 'bBROtiva' 

結果:

1000028041 
相關問題