2012-05-02 40 views
2

我有下表,並且試圖根據id對行進行分組。我希望能夠返回所有類型包含S和A的情況下的相同ID(a19),但不返回S或A互不存在的情況(a22 & a33)。訪問按條件跨行分組

這樣做最簡單的方法是什麼?

+---+----+--------------+ 
|id |type| text  | 
+---+----+--------------+ 
a19 S  S1 
a19 A  A1 
a19 A  A1 
a22 Y  A1 
a33 S  S1 
+---+----+--------------+ 
+0

我不認爲你想分組。我認爲你需要使用自我加入,但我不確定如何去做。我重申了這一點,以便這裏的一位SQL專家可以幫助你。另外,您在這裏播放的表格有重複的記錄(第2和第3條記錄)。我希望這只是一個錯字,或者你沒有在這裏顯示所有的字段。 – HK1

回答

3

這裏是返回同時具有A和S類型的所有ID查詢:

SELECT subQuery.id 
FROM (SELECT group_table.id 
FROM group_table 
WHERE (((group_table.type) IN ("A","S"))) 
GROUP BY group_table.id, group_table.type) AS subQuery 
GROUP BY subQuery.id 
HAVING Count(subQuery.id) = 2 

你可以把它稍軟更換「......在(‘A’,」 S「)...」類似「SELECT FilterType FROM FilterTable」 and changing 「... Count(subQuery.id)= 2 ...」 to eg 「」... Count(subQuery.id)= SELECT COUNT(FilterType)FROM FilterTable ...「