我有一个 SQL 表,其中包含有关 clint 的数据(比如 ClientId)和他们为服务付费的日期以及他们的服务开始的日期:
Headings: ClientId, PurchaseDate, StartDate
Line 1: 1; 1/07/2012; 15/07/2012
Line 2: 2; 21/06/2012; 01/07/2012
Line 3: 3; 31/07/2012; 02/08/2012
Line 4: 4; 04/08/2012; 15/08/2012
Line 5: 5; 15/08/2012; 2/09/2012
我创建了一个查询,它只选择那些在上个月开始服务的客户。条件语句如下:
WHERE StartDate >= DATEADD(month, -1, dateadd(month, datediff(month,0,getdate()),0))
and StartDate < dateadd(month, 1, dateadd(month, -1, dateadd(month, datediff(month,0,getdate())
现在我需要一个查询,其中还包括那些在上个月支付服务费的客户。我认为可以有以下说法:
WHERE PurchaseDate >= DATEADD(month, -1, dateadd(month, datediff(month,0,getdate()),0))
and PurchaseDate < dateadd(month, 1, dateadd(month, -1, dateadd(month, datediff(month,0,getdate())
问题是那些在一个月内具有 PurchaseDate 和在下个月具有 StartDate 的客户将出现在这两个月的报告中。因此,据我了解,应该有以下含义的复杂条件:
WHERE StartDate >= DATEADD(...)
& StartDate < DATEADD(...)
& (PurchaseDate >= DATEADD(...)
& PurchaseDate < DATEADD(...)
& PurchaseDate happened a month earlier than StartDate
请帮助找到解决方案。