我目前有一个查询返回,例如,以下内容:(您可以假设这是表结构的样子)
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 相等,则显示最大结束日期。(按客户 ID 和开始日期分组,最大值(结束日期))
- 如果 end_dates 相等,则显示最小开始日期。(按客户 ID 和结束日期分组,分钟(开始日期))
我可以编写一个查询来执行上述操作之一,但我不确定我如何能够同时执行这两个操作。或者,如果完全不同的方法会更好。
SQL Server 2008
谢谢!