我有一份卖家名单,我必须为他们分配经理。数据格式如下
Seller category Division Sales
David 17 A 5000
David 23 B 2000
David 91 C 100
David 25 C 200
Jack 23 A 4000
Jack 17 A 4000
Jack 25 B 3000
现将经理名单公布如下:
Manager preferred_category Designation
Tom 17 H
Aman 17 L
Sandy 23 H
John 23 L
Robin 91 H
Adam 91 L
Clara 25 H
Ted 25 L
现在遵循的规则如下:
- 卖家 A 和 B 部门类别将分配给该类别的设计“H”经理,C 类别将从销售额最高的类别的 A、B 经理那里获得相同的分配
- 如果所有类别都是C,那么卖家只会得到1个经理,即卖家销售额最高的类别的L设计
我已经设法用VBA解决这个问题,但是这太麻烦了,我想用sql自动化。我只需要找到某种开始或方式来开始这个过程,我就能继续前进。任何帮助将不胜感激。
提前致谢
最佳答案
这是一个粗略的方法。不保证适用于任何特定的 SQL 风格,但我假设您有 Access 或 SQL Server。
- 创建两个表:SELLER 和 MANAGER 并插入您的数据
- 在 SELLER 表中,添加一个名为“seller_id”的自动编号列和一个名为“manager_id”的新整数列(尚无数据)
- 在 MANAGER 表上,添加一个名为“manager_id”的自动编号列
- 执行一些 SQL 来填充 SELLER.manager_id 列:
规则 1 是这样的:
update seller set manager_id =
(select manager_id from MANAGER m
inner join SELLER s on s.category = m.preferred_category
where s.division in ('A','B') and m.designation = 'H'
and rownum < 2)
对于规则 2:
update seller set manager_id =
(select manager_id from MANAGER m
inner join SELLER s on s.category = m.preferred_category
where s.division = 'C' and m.designation = 'L'
and rownum < 2)
如果您需要为卖家分配更多经理,您需要创建一个交叉引用表并移动 ID 列
关于mysql - 用于分配满足给定条件的经理的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29350273/