2012-02-24 16 views
0

こんにちは、私は私のクエリでの最後の6ヶ月のデータをフェッチし、上の「月 - 今年のラベルを表すために必要しようとしています過去6ヶ月のデータ(ReportBuilder)が

x軸。したがって、1か月間のデータがある場合はクエリはうまく動作しますが、結合に失敗し、その月にデータが返されない場合、ラベルはありません.Henceチャート(レポートビルダー3.0)に描画できません。

ApptMonthYearname NotCompleteAppointments AppointmentYear AppointmentMonthInt
1月2012 118 2012 1
12月 - 2011 88 2011 12

クエリ句は予定が選択された範囲の間に入るされていることを確認場合、次に、3つのテーブルに参加して含みます月と年かどうか:

declare @SelectedMonth int 
declare @SelectedYear int 
declare @careprovider varchar(20) 
DECLARE @intFlag INT 

はのは言わせ

SET @SelectedMonth = 1 
SET @SelectedYear =2012 

declare @selectedDate datetime 
declare @previoussixmonthsdate datetime 

IF (@SelectedMonth = Datepart(mm,GETDate()) and @SelectedYear =Datepart(yyyy,GETDate())) 

BEGIN 
SET @selectedDate = CONVERT(datetime, CONVERT(varchar(2), datepart(DD,GETDATE())+ '/' + Convert(varchar(2),@SelectedMonth) + '/' +Convert(varchar(4),@SelectedYear), 103)) 
SET @previoussixmonthsdate= DATEADD(month, -6, @selectedDate) 

END 

ELSE 

BEGIN 

SET @selectedDate = CONVERT(datetime, '31'+ '/' + Convert(varchar(10),@SelectedMonth) + '/' +Convert(varchar(10),@SelectedYear), 103) 
SET @previoussixmonthsdate= DATEADD(month, -6, @selectedDate) 

END 


select @selectedDate, @previoussixmonthsdate 



SELECT  dbo.Filteredals_clinicappointment.als_clinicappointmentid [AppointmentID], 
     dbo.Filteredals_clinicappointment.als_statusname [AppointmentStatus], 
     dbo.Filteredals_clinicappointment.als_appointmentdatetime [AppointmentBookingTime], 
     Datepart(mm,dbo.Filteredals_clinicappointment.als_appointmentdatetime) [AppointmentMonth], 
     Datepart(yyyy,dbo.Filteredals_clinicappointment.als_appointmentdatetime) [AppointmentYear], 
     DATENAME(month,dbo.Filteredals_clinicappointment.als_appointmentdatetime) [AppointmentMonthName], 
     DATENAME (year,dbo.Filteredals_clinicappointment.als_appointmentdatetime) [AppointmentyearName] 


FROM   dbo.Filteredals_clinicappointment LEFT OUTER JOIN 
        dbo.Filteredrbs_clinicinstance ON dbo.Filteredals_clinicappointment.als_clinicinstance = dbo.Filteredrbs_clinicinstance.rbs_clinicinstanceid LEFT OUTER JOIN 
        dbo.Filteredrbs_clinic ON dbo.Filteredrbs_clinicinstance.rbs_clinic = dbo.Filteredrbs_clinic.rbs_clinicid  LEFT OUTER JOIN 
        dbo.Filteredrbs_careproviders ON dbo.Filteredrbs_clinic.rbs_careprovider = dbo.Filteredrbs_careproviders.rbs_careprovidersid 

        WHERE dbo.Filteredrbs_careproviders.rbs_careprovidersid= @careprovider 
        AND dbo.Filteredals_clinicappointment.als_appointmentdatetime <= @selectedDate AND 

        dbo.Filteredals_clinicappointment.als_appointmentdatetime >[email protected] 

       ,dbo.Filteredals_clinicappointment.als_appointmentdatetime)= @SelectedYear 

        GROUP BY YEAR(AppointmentList.AppointmentBookingTime), MONTH(AppointmentList.AppointmentBookingTime)) as [DNAAppts] 

ご協力いただければ幸いです。

答えて

0

レポート範囲内の各月のデータを常に取得する方法の1つは、一時的な/派生テーブルに日付のセットを設定し、それをデータに残すことです。

また、クエリの結果(または分かりやすい中間段階)をテンポラリテーブルに保存して、そのテーブルを調べて、予想される月ごとのデータがあることを確認し、追加しない場合は追加することもできます。

アプローチ3:あなたにいくつかのインスピレーションを提供しますうまくいけば、各月の値を返す文を使用してクエリが

と一致するように、実際のデータが存在しない場合、これを行うためにも、より多くの方法は、おそらくありますが予想組合が、

+0

乾杯。私が思う最初のものを試してみます。 – user1230862

関連する問題