Скажем, у меня есть такая таблица на моем сервере MsSql server 2005
Apples
+ Id
+ Brand
+ HasWorms
Теперь я хочу получить общее представление о количестве яблок с червями в каждой марке.
На самом деле, еще лучше будет список всех брендов яблок с флагом, если они не испорчены или нет.
Так что, если бы у меня были данные
ID| Brand | HasWorms
---------------------------
1 | Granny Smith | 1
2 | Granny Smith | 0
3 | Granny Smith | 1
4 | Jonagold | 0
5 | Jonagold | 0
6 | Gala | 1
7 | Gala | 1
Я хочу закончить с
Brand | IsUnspoiled
--------------------------
Granny Smith | 0
Jonagold | 1
Gala | 0
Я полагаю, я должен сначала
select brand, numberOfSpoiles =
case
when count([someMagic]) > 0 then 1
else 0
end
from apples
group by brand
Я не могу использовать пункт имения, потому что тогда бренды без действительных записей исчезнут из моего списка (я не вижу записи Gala).
Тогда я подумал, что подзапрос должен это сделать, но тогда я не могу связать идентификатор apple внешнего (сгруппированного) запроса с внутренним (count) запросом ...
Есть идеи?