SELECT DISTINCT HAVING Policz unikalne warunki
Szukałem odpowiedzi na to pytanie, ale nie mogę znaleźć sposobu na uzyskanie tego odrębnego zestawu rekordów na podstawie warunku. Mam tabelę z następującymi przykładowymi danymi:
Type Color Location Supplier
---- ----- -------- --------
Apple Green New York ABC
Apple Green New York XYZ
Apple Green Los Angeles ABC
Apple Red Chicago ABC
Apple Red Chicago XYZ
Apple Red Chicago DEF
Banana Yellow Miami ABC
Banana Yellow Miami DEF
Banana Yellow Miami XYZ
Banana Yellow Atlanta ABC
Chciałbym utworzyć zapytanie, które pokazuje liczbę unikalnych lokalizacji dla każdego odrębnego Typu + Koloru, gdzie liczba unikalnych lokalizacji jest większa niż 1, np.
Type Color UniqueLocations
---- ----- --------
Apple Green 2
Banana Yellow 2
Zauważ, że {Apple, Red, 1} nie pojawia się, ponieważ jest tylko 1 lokalizacja dla czerwonych jabłek (Chicago). Myślę, że mam ten (ale może istnieje prostsza metoda). Używam:
SELECT Type, Color, Count(Location) FROM
(SELECT DISTINCT Type, Color, Location FROM MyTable)
GROUP BY Type, Color HAVING Count(Location)>1;
Jak mogę utworzyć kolejne zapytanie, które zawiera listęType, Color
, iLocation
dla każdego odrębnegoType,Color
kiedy liczy się unikalne lokalizacjeType,Color
jest większa niż 1? Wynikowy zestaw rekordów wyglądałby następująco:
Type Color Location
---- ----- --------
Apple Green New York
Apple Green Los Angeles
Banana Yellow Miami
Banana Yellow Atlanta
Zauważ, żeApple, Red, Chicago
nie pojawia się, ponieważ jest tylko 1 lokalizacja dla czerwonych jabłek. Dzięki!