テーブルを変更できないサードパーティアプリを使用しています。月末にデータをダンプし、それらのデータにその月の最終日の日付でフラグを立てる追加の datetime 列「AsOfDate」を使用して、カスタム マッチング「Monthly」テーブルを作成しました。
単一のストアド プロシージャを作成し (アプリケーションは、すべてのレポートのソースとしてビューまたはストアド プロシージャを必要とするように設計されています)、現在のデータ テーブルを使用するパラメーターを使用できるようにしたいと考えています (パラメーターは NULL または = Today's日付) または月末テーブルを使用して、月末の日付でフィルター処理します。このようにして、ユーザーが現在のデータまたは特定の月末期間のデータを使用できるレポートが 1 つあります。
あなたはどちらを好みますか (そしてその理由) 申し訳ありませんが、これは完全にコード化されていません
ソリューション #1 ユニオン クエリ
Create Proc Balance_Report (@AsOfDate)
AS
Select Column1
From
(Select GetDate() as AsOfDate
, Column1
From Current.Balance
Union
Select AsOfDate
, Column1 From MonthEnd.Balance
) AS All_Balances
Where All_Balances.AsOfDate = @AsOfDate
解決策 #2 If ステートメントを使用してテーブルを選択する
Create Proc Balance_Report (@AsOfDate)
AS
If @AsOfDate IS NULL or @AsOfDate = GetDate()
Select GetDate() as AsOfDate
, Column1
From Current.Balance
Else
Select AsOfDate
, Column1 From MonthEnd.Balance
Where AsOfDate = @AsOfDate
繰り返しますが、これは完全にコード化されておらず、データベースに依存していません (ただし、SQL Server 2005 です)。
編集:別のストアドプロシージャを使用したソリューション#2のバリエーション
Create Proc Balance_Report (@AsOfDate)
AS
If @AsOfDate IS NULL or @AsOfDate = GetDate()
Exec Current_Balance_Date -- no param necessary
Else
exec MonthEnd_Balance_Date @AsOfDate