私は、毎月の監査プロセスのレポートを生成するVisual Studioベースのストアドプロシージャを使用しています。照会されるデータベースでは、毎月のすべてのデータが個別のテーブル(Contacts_month_1、Contacts_month_2など)に存在します。ストアドプロシージャレポート生成の結果セットでの問題
このレポート生成で使用されるSQLには、軽微なロジックが含まれています。ハードコーディングされた日付を使用するよりも。この問題は、2017年1月の初めに発生しました。前の月の結果だけでなく、前年の結果も受け取り始めました。具体的には、2016年12月の監査レポートには、2012年12月12日と2015年12月の両方のデータが含まれていました。当初、私はそれが年明けに基づいていくつかの種類のまぐれだと思った、と我々はまだのようにターン中、この自動化されたプロセスを持っていませんでした。残念ながら、2017年1月の出力ファイルの中で今日もオフィスに入ったので、2016年1月の結果も受け取りました。
私はプロセスに年チェックを含めるように試みましたが、私はまだ同じ結果を得ています出力。任意のアイデアをいただければ幸いです。
Declare @GetMonth TinyInt
,@SessionTable varchar(50)
,@ContactTable varchar(50)
,@TableVersion varchar(2)
Declare @GetYear SmallInt
,@SessionTable_year varchar(50)
,@ContactTable_year varchar(50)
,@TableVersion_year varchar(4)
Set @GetMonth=MONTH(cast(GetDate() as Datetime))-1
Set @GetYear=YEAR(cast(GetDate() as Datetime))
If (@getmonth=0) Set @GetMonth=12 + (@GetYear-1)
Set @TableVersion=CAST(@getMonth as varchar(2))
Set @SessionTable='[CentralDWH].[dbo].[Sessions_month_' [email protected] +']'
Set @ContactTable ='[CentralDWH].[dbo].[Contacts_month_' [email protected] +']'
-- Select @GetMonth,@GetYear (DEBUGGING STATEMENT)
-- Select @SessionTable,@ContactTable (DEBUGGING STATEMENT)
Exec('SELECT [PBX_id] as AgentID
,[p22_value] as Skill
,''Athens'' as Location
,Convert(varchar(20),c.[local_start_time],120) as local_start_time
,convert(varchar(20),c.[local_end_time],120) as local_end_time
,U.[USER_NAME]
,call_id
FROM '[email protected] +' S
Inner join dbo.Users U on S.user_key=U.user_key
inner Join '+ @ContactTable+' C on S.contact_key=C.contact_key
Where is_screen > 0
And Unit_Num between 398003 and 398005
and P22_value is not null
and c.[local_start_time] > ' + @GetYear
+ ' order by local_start_time')
これは確かにGetYear-1の変更を指定しようとしている私の考えでした。私は決して熟練したクエリー・ライターではなく、私は過去4年間に運動しようとしなかった知識に基づいてこれをすべて一緒に断片化しようとしています。 @GetYearの参照をすべて削除すると、結果セットに2年分のデータが残ってしまいます。 私はこれをもっと掘り下げて、私が引き取ることができるものを見ていきます。あなたが提供した方向性に感謝します。 –
その場合は、WHERE句でジョインと条件をチェックすることをお勧めします。問題はどこかにあるはずです。私が助けてくれることを嬉しく思っています。あなたがその原因を見つけたら教えてください。 – Cosmin