2012-05-02 30 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 ...“