如何利用SponsorID与LastMonthRank实现赞助者上月排名为6时加倍数量
解决方案
要实现「当客户的赞助者上月排名为6时,将订单数量加倍」的需求,你需要通过自连接获取赞助者的上月排名——因为SponsorID本质是赞助者的客户ID,可将表与自身关联来匹配赞助者的LastMonthRank字段。
最终SQL代码
SELECT c.customerID, c.orderID, c.sponsorID, c.LastMonthRank, CASE WHEN s.LastMonthRank = 6 THEN c.Qty * 2 ELSE c.Qty END AS Qty FROM 你的表名 c LEFT JOIN 你的表名 s ON c.sponsorID = s.customerID;
逻辑解析
- 用别名
c指代当前客户的订单记录,别名s指代该客户赞助者的记录 - 通过
c.sponsorID = s.customerID建立关联,从s中获取赞助者的上月排名 CASE语句判断赞助者排名是否为6:满足条件则订单数量翻倍,否则保留原数量
额外提示
如果能确保所有SponsorID对应的赞助者都存在于表中,可将LEFT JOIN替换为INNER JOIN,过滤掉无有效赞助者的记录;若存在赞助者不在表中的情况,LEFT JOIN会让这类记录的s.LastMonthRank为NULL,此时CASE会自动保留原订单数量。
内容的提问来源于stack exchange,提问作者Kyle Sheffield
相关产品推荐
相关产品推荐

