这是我的输入表(球员表)与playerID和他们的播放日期,我希望这是对里程碑表,其中有球员实现他的里程碑时,我想检查对球员表的里程碑表,看看他们在60天内发挥里程碑日期的细节检查
- 如果他们没有玩他们是一个60天的搅动者,但如果他们在60天后返回,那么他们的状态是返回者。
- 如果他们根本没有回来,那么他们是一个60天的搅拌机
- 如果他们在里程碑日期后的60天内参加比赛,那么他们就是活跃球员
玩家表
| 玩家ID|播放日期|
| --------------|--------------|
| 1|2022年10月1日|
| 1|2022年1月11日|
| 1|2022年1月12日|
| 1|2022年1月13日|
| 1|2022年5月13日|
| 1|2022年5月14日|
| 1|2022年5月15日|
| 二|2022年1月15日|
| 二|2022年2月15日|
| 三|2022年10月15日星期一|
| 四|2022年1月5日|
| 四|2022年5月5日|
里程碑表
| 玩家ID|里程碑|
| --------------|--------------|
| 1|2022年1月13日|
| 二|2022年2月15日|
| 三|2022年10月15日星期一|
| 四|2022年1月5日|
我的输出
| 玩家ID|里程碑日期|流失状态|玩家状态|
| --------------|--------------|--------------|--------------|
| 1|2022年1月13日|60天搅拌机|返回者|
| 二|2022年2月15日|60天搅拌机|丘尔纳|
| 三|2022年10月15日星期一|60天搅拌机|丘尔纳|
| 四|2022年1月5日|活跃玩家|返回者|
如何才能实现这一点
2条答案
按热度按时间kzipqqlq1#
听起来你只对基于里程碑日期 * 之后的球员行(表的奇怪名称,因为它似乎代表比赛,而不是球员)进行分类感兴趣。
这是非常简单的(未经测试):
这将查找每个玩家在里程碑日期之后的玩家行的最小游戏日期(如果有的话),并使用它来确定状态。
w3nuxt5m2#
使用左连接来匹配60天内和60天后的战术。
这与
player
连接了两次。第一次连接获取了里程碑日期和60天后的所有行。第二次连接获取了60天后的所有行。如果两个日期关系都不匹配,则该连接将返回一行,其中
player
中的所有列都是NULL
。IF()
条件测试每个连接是否包含这些空值,并在该列中生成相应的结果。