Я использую SQL Server 2012.
Меня попросили предоставить распределение клиентов по группам продуктов.
Например, сколько клиентов имеют только продуктов и субпродуктовнабор A.
Сколько клиентов имеет только продуктов и субпродуктов. Набор A и B.
Сколько клиентов только получили продуктов и субпродуктовустановить B и C.
Я пытаюсь найти лучший способ решить эту проблему.У меня есть такая таблица:
|CustomerKey| ProductCode |SubProductCode|
|-----------|--------------|--------------|
| ABC123 | PROD1 | SP1 |
| ABC123 | PROD1 | SP2 |
| ABC145 | PROD1 | SP1 |
| ABC157 | PROD3 | SP1 |
| ABC157 | PROD2 | SP5 |
| ABC157 | PROD1 | SP2 |
Я хочу классифицировать своих клиентов, используя ProductCode и SubProductCode, например:
|ProductCode | SubProductCode|Category|
|------------|---------------|--------|
| PROD1 |SP1 | A |
| PROD1 |SP2 | B |
| PROD2 |SP5 | C |
| PROD3 |SP1 | D |
Вывод, который я хочу увидеть, выглядит следующим образом:
|Category| Number of customers with ONLY this|
|--------|-----------------------------------|
| A | 1 (ABC145) |
| B | 0 |
| A & B | 1 (ABC123) |
| C | 0 |
| B,C & D| 1 (ABC157) |
Обратите внимание, что мы не учли клиента ABC123 в категории A, поскольку у этого клиента есть оба продукта категории A & B.Точно так же, хотя у клиента ABC157 есть PROD2 и SP5 (категория C), этот клиент не включается в этот подсчет, поскольку у него также есть продукты других категорий.
Я не хочу тратить часы на это только для того, чтобы понять, что иду по неверному пути.Я имею в виду создание сводной таблицы для всех клиентов с количеством продуктов и подпродуктов.Примерно так:
|CustomerKey |PROD1 SP1 |PROD1 SP2|PROD2 SP5 |PROD3 SP1|
|------------|----------|---------|----------|---------|
|ABC123 | 1 | 1 | 0 | 0 |
|ABC145 | 1 | 0 | 0 | 0 |
|ABC157 | 0 | 1 | 1 | 1 |
Я бы тогда мог подсчитать поля.Этот подход имеет дополнительное преимущество, позволяя мне переопределить то, что делает категорию А в какой-то момент в будущем, и я просто настраиваю, какие столбцы я считаю.
Мой вопрос: как лучше всего достичь моей цели?Есть лучший способ сделать это?Я собираюсь написать около 150 описаний случаев для различных комбинаций продуктов и субпродуктов!