我们有一个表格,其中包含产品订阅的状态更新。订阅开始时会向表中插入一条记录,订阅结束时会使用结束日期更新该记录。我们的一个系统(不知道是哪一个)有时会在结束订阅然后再次开始(创建新记录)时执行“同一天删除\添加”。因此,相同的订阅者 ID 附加到多个记录,即使没有真正改变。
示例数据如下:
recID subID start end prodtype
1 19 01/11/2001 01/15/2001 A
2 19 01/15/2001 01/16/2001 A
3 19 01/16/2001 01/20/2001 A
4 19 01/30/2001 01/31/2001 A
这家伙从 1/11 开始,到 1/20 结束。记录 2 和 3 由系统输入(同一天删除添加,但不是真的)。记录 4 是 19 先生后来开始的另一个订阅。
我有一些代码将尝试仅解析每个不同订阅的第一条(实际)记录,但如果不使用 max() 并按订阅者分组,它就无法找到真正的结束日期。这当然会显示两个订阅,1/11 - 1/31 和 1/30 - 1/31,这是错误的。
我正在努力将这种模式解决为两个这样的记录:
subID start end prodtype
19 01/11/2001 01/20/2001 A
19 01/30/2001 01/31/2001 A
这是在 Teradata 中,但我相信它只是 ANSI SQL。