У нас есть отношения «территория/продавец», где: на каждой территории (TERR) может быть несколько продавцов (SALM), но у каждого продавца может быть только одна территория.
Пример:
Territory Salesman Sales$ Period
1 100 999 1
1 100 999 2
1 200 999 1
1 200 999 2
2 300 999 1
2 300 999 2
3 400 999 1
3 400 999 2
Я хотел бы построить сводную таблицу, предпочтительно используя один оператор SQL, который:
- показывает территорию,
- количество продавцов для этой территории (** ПОЯСНЕНИЕ: ** это общее количество уникальных кодов продавцов, совершивших продажи на этой территории) и
- список номеров продавцов в том же файле.
пример:
Territory # of Salesmen Salesman
--------- ------------- --------
1 2 100
1 2 200
2 1 300
3 1 400
SQL:
// First I get a list of territories and number of salesman in each territory
With tmpFile as (Select TERR, SALM, count(*)
FROM FILE
GROUP BY TERR, SALM
ORDER BY TERR, SALM
)
SELECT tmpFile.TERR, count(*) FROM tmpFile GROUP BY
tmpFile.TERR ORDER BY tmpFile.TERR
// Next step is to get a list of all salesmen in a territory
Select TERR, SALM
FROM FILE
GROUP BY TERR, SALM
ORDER BY TERR, SALM
)
// Последним шагом будет объединение двух предыдущих шагов. Я хотел бы объединить все три шага в одно утверждение, если это возможно. Есть ли более эффективный способ сделать это. Я использую IBM db/2 SQL.