我们有一个区域/销售员关系,其中:每个区域 (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。