私たちはクライアントにサービスを提供しており、各クライアントは90日間の承認を受けています 15ヶ月間をカウントする機能を作成したいと思います。 たとえば、クライアントが10/17/2017に承認を取得したとします。これは、認証が10月のためにカウントされませんように、それは10月の15日未満のだ意味していますが、それは11月、12月と1月のためにカウントすることがある2018年Xの金額を1ヶ月としてカウントする機能
;WITH CTE AS (
select
d.ClientId,
LOC
datediff(day, l.DecisionOn, d.duedate) 'Days',
l.DecisionOn,
d.duedate
from code d
join codeloc l on d.curdocversionid = l.docversionid
join codeaccess a on a.docversionid = d.curdocversionid
where codeid = 69999
and aoca in ('68','69','70','71','72','74')
),
T AS (
SELECT ClientId, LOC, COUNT(*) CNT FROM CTE
WHERE [Days] > 15
AND AuthorizedDecisionOn > DATEADD(MONTH, (CASE WHEN DAY(GETDATE()) > 15 THEN 1 ELSE 0 END) , CAST(GETDATE() as date))
AND duedate < DATEADD(MONTH,3 + (CASE WHEN DAY(GETDATE()) > 15 THEN 1 ELSE 0 END) , CAST(GETDATE() as date))
GROUP BY ClientId, LOC
)
の問題は何ですかあなたの質問?あなたのテーブルからいくつかのサンプルデータを追加できますか? –
彼らは、現在のクライアント数がいつでも許可されていることをいつでも確認できるようにしたいと考えています。 – Chairbedding
適切なソフトウェア(MySQL、Oracle、DB2など)とバージョンの両方でデータベース質問にタグを付けると便利です。 'sql-server-2014'です。構文と機能の相違は、しばしば答えに影響します。 'tsql'は選択肢を絞り込みますが、データベースは指定しないことに注意してください。テーブルスキーマ、サンプルデータ、期待される結果は非常に役に立ちます。 – HABO