我现在有一个查询,返回,例如,以下内容:(你可以认为这是表的结构是什么样子)得到查询摆脱“半重复”
customer_id | start_date | end_date
1 | 20120101 | 20120401
2 | 20120402 | 20121231
1 | 20130101 | 20130401
1 | 20130101 | 20130330
2 | 20130331 | 99991231
2 | 20130402 | 99991231
有需要考虑的两点:
- 客户可以回来,所以对此做一个正常的最大/最小方法是行不通的。
- 这实际上是多个服务的概述,有时其中一个开始或结束于不同的日期。 (非常少见,但我需要处理这种情况。)
所以考虑到上述情况,我希望有一个查询将返回1,第2,第3,和第5行。
我的想法&方法,这将是:
- 如果start_dates相等,显示最大结束日期。 (group by customer_id & start_date,max(end_date))
- 如果end_dates相等,则显示最小开始日期。
我可以编写一个查询,将做到上面的一个,但我不知道我怎么会能够去这样做他们两个(由CUSTOMER_ID & END_DATE,分(开始)组)与此同时。或者如果完全不同的方法会更好。
SQL Server 2008
谢谢!
。 。你的问题是什么?它是如何实现你的两个重点?或者这是否是一个好方法?对于后者,你实在没有足够的信息。 –
您是否尝试合并重叠的日期范围? (编号示例行将是一个很好的手势,因为您通过文本中的数字引用它们。) – HABO
我的问题现在用粗体显示。我需要一个能够做到这一点的查询。我提出了一些想法和想法,因为我认为这会有所帮助。答案不一定要跟着他们。 – Julian