Привет,
Я пытаюсь получить данные за последние шесть месяцев в моем запросе, и мне нужно представить метку «Месяц-год» на оси X. Таким образом, запрос работает нормально, если есть данные за месяц, но если он не работает в соединении и данные за этот месяц не возвращаются - метка отсутствует. Поэтому я не могу нарисовать ее на диаграмме (построитель отчетов 3.0) Например,
ApptMonthYearname NotCompleteAppointments НазначениеYear НазначениеMonthInt
Январь-2012 118 2012 1
Декабрь-2011 88 2011 12
Запрос включает соединение трех таблиц, а затем условие where проверяет, находится ли встреча между выбранным диапазоном месяца и года или нет:
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 >=@previoussixmonthsdate
,dbo.Filteredals_clinicappointment.als_appointmentdatetime)= @SelectedYear
GROUP BY YEAR(AppointmentList.AppointmentBookingTime), MONTH(AppointmentList.AppointmentBookingTime)) as [DNAAppts]
Любая помощь будет принята с благодарностью.