我有一群工人可以接听电话或协助别人的电话。也就是说,所有工作人员要么首先接听电话(“主要”),要么支持先接听电话的其他人(“支持”)。数据库看起来像这样:
| CallAnsweredBy | SupportedBy | Outcome | Date |
| -------------- | ----------- | ------- | -------- |
| TeamMem1 | TeamMem2 | 10 | 20230101
| TeamMem2 | TeamMem1 | 10 | 20230101
| TeamMem3 | TeamMem1 | 9 | 20230101
. . .
| TeamMem2 | TeamMem1 | 5 | 20230101
| TeamMem3 | TeamMem4 | 4 | 20230101
. . .
我想知道当呼叫 #2(上面第二行)进来时(例如),在将该呼叫作为主要呼叫之前,接听者 (TM2) 在这一天支持了多少个呼叫? (对于 20230101 上的呼叫 #2,答案将为 1。对于呼叫 #3,答案将为零,因为 TeamMem3 在该呼叫被视为“主要”之前不支持任何呼叫。)
我以前尝试过 PARTITION BY 来处理这种情况,但这次没有帮助。
我能够通过 SELF JOIN 解决这个问题。来自 t2 的先前支持的调用计数(支持者),其中行号小于 t1 行(如 JNevill 建议的那样)是关键。