Вы можете использовать выражения CASE
(люди называют это " условное агрегирование ") для подсчета помеченных продуктов для каждого клиента, как это (что будет игнорировать запись, когда столбец Product
пуст) :
SELECT Company
, COUNT(CASE Flag WHEN 'Y' THEN Product END) AS Y
, COUNT(CASE Flag WHEN 'N' THEN Product END) AS N
FROM YourTable
GROUP BY Company;
Или вы можете использовать этот запрос PIVOT, который является краткой формой написания выше:
SELECT Company, Y, N
FROM (SELECT Company, Product, Flag FROM YourTable) AS src
PIVOT (COUNT(Product) FOR Flag IN (Y, N)) AS pvt;