Ваша модель данных плохая!
Предполагается, что она равна:
| types_cookies_store01 | types_cookies_store02 | types_cookies_store03 |
|-----------------------|-----------------------|-----------------------|
| A | | |
| C | | |
| | A | |
| A | | |
| B | | |
| | B | |
| | | B |
| C | | |
| | C | |
Не используйте новый столбец для каждого магазина, используйте один столбец, чтобы указать магазин:
| Cookietype | Store |
|------------|-------|
| A | 01 |
| A | 03 |
| B | 02 |
| B | 01 |
| A | 02 |
| C | 02 |
| D | 02 |
| B | 03 |
| B | 01 |
| A | 03 |
| C | 03 |
Теперь вы можете группировать по Cookietype, чтобы получать продажи всех магазинов.
Select Cookietype, Count(Cookietype) as CountOfCookieType
From SalesTable
Group By Cookietype
Или, чтобы получать продажи по магазинам, добавьте Магазин в группу по:
Select Cookietype, Store, Count(Cookietype) as CountOfCookieType
From SalesTable
Group By Cookietype, Store
С этой моделью данных вы можете добавлять (почти) неограниченное количество новых хранилищ.
С вашей моделью данных вам нужен новый столбец для каждого нового магазина, а таблицы ограничены 255 столбцами!
Вы можете обойти свою плохую модель, используя объединенный запрос:
SELECT UnionCols.Cookietype, COUNT(*)
FROM (
SELECT types_cookies_store01 As Cookietype, 'Store01' As Store
FROM cookies
WHERE Not types_cookies_store01 Is Null
UNION ALL
SELECT types_cookies_store02 As Cookietype, 'Store02' As Store
FROM cookies
WHERE Not types_cookies_store02 Is Null
UNION ALL
SELECT types_cookies_store03 As Cookietype, 'Store03' As Store
FROM cookies
WHERE Not types_cookies_store03 Is Null
) As UnionCols
Group By UnionCols.Cookietype
Но производительность при работе с большими данными будет плохой, и новые хранилища сложно добавить.
Настоятельно рекомендуется улучшить свою модель данных вместо того, чтобы обходить ее!
Некоторые ссылки для чтения:
Основы проектирования баз данных
Доступ все в одном