特定の条件を満たすグループの一部であるすべての行を見つける必要があります。行のグループの少なくとも1つに特定の値があるかどうかを確認する方法
私はグループをグループ列の値を共有するいくつかの行として定義しています。
関連グループには、Eligibleがtrueに設定された少なくとも1つの行が含まれていなければならず、グループ内の行のうち少なくとも2つはGroupまたはEligible以外の列で互いに異なる必要があります。
例表
Group LastName FirstName Eligible
==========================================
1 Smith John True
1 Smith John False
2 Doe Beth True
2 Doe Jane False
2 Doe Jane False
3 Ward Bill True
4 Adams Sally True
4 Grimes Sally True
望ましい結果
Group LastName FirstName Eligible
==========================================
2 Doe Beth True
2 Doe Jane False
2 Doe Jane False
4 Adams Sally True
4 Grimes Sally True
次のクエリは、
私が近づくSELECT *
FROM ExampleTable
WHERE Group in
(SELECT Group
FROM ExampleTable
GROUP BY Group
HAVING count(distinct LastName) > 1 or count(distinct FirstName) > 1)
問題は、それは考慮していないので、それはあまりにも多くの結果を返すということですグループ内のレコードの1つが適格とマークされているかどうか。
私はおそらく単純なものがありませんが、グループ内のレコードがすべて適格に設定されているかどうかをチェックする方法を見つけることができません。