クリント (ClientId など) と、サービスの料金を支払った日付とサービスが開始された日付に関するデータを含む SQL テーブルがあります。
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
解決策を見つけるのを手伝ってください。