语法问题?

Problems with Syntax?

我使用的系统不允许我直接访问 SQL 数据库,我必须使用他们内置的报告工具,这太糟糕了。我是 运行 下面的代码,它告诉我 ) 附近有一个语法错误,但我自己看不出这是怎么回事,有什么想法吗?

SELECT ST.Staff_ID,
COUNT (CASE WHEN Referral_Date BETWEEN @StartDate AND @EndDate ) AS 'Referrals',
COUNT (CASE WHEN Att_Start_Dttm BETWEEN @StartDate AND @EndDate ) AS 'Appointments'

FROM tbldiaryappointment DA
left outer join tblDiaryAppointmentClinicianInvitee CI on DA.Diary_Appointment_ID = CI.Diary_Appointment_ID
left outer join tblstaff ST on CI.Clinician_Invitee_Staff_ID = ST.STaff_ID
left outer join tbllocation LOC on LOC.Location_ID = DA.Scheduled_Location_ID
left outer join tblpatient PAT on PAT.Patient_ID = DA.Patient_ID
left outer join tblAttendanceTypeValues ATV on ATV.Attendance_Type_ID = DA.Attendance_Type_ID
left outer join tblDiaryAppointmentScheduledEvent SE on SE.Diary_Appointment_ID = DA.Diary_Appointment_ID
left outer join tblEventValues EVE on EVE.Event_ID = SE.Event_ID
left outer join tblProfessionalGroupValues PGV on ST.Professional_Group_ID = PGV.Professional_Group_ID
left outer join tblStaffJobRoleCodeValues JOB on JOB.Staff_Job_Role_Code_ID = ST.Job_Role_Code_ID
left outer join tblReferral REF on REF.Patient_ID = DA.Patient_ID

搜索 CASE 表达式的语法是:

CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

您遗漏了 Boolean_expression 之后的部分。

此外,您的声明缺少 GROUP BY 子句。

SELECT ST.Staff_ID,
COUNT (CASE WHEN Referral_Date BETWEEN @StartDate AND @EndDate THEN 1 END) AS 'Referrals',
COUNT (CASE WHEN Att_Start_Dttm BETWEEN @StartDate AND @EndDate THEN 1 END ) AS 'Appointments'

FROM tbldiaryappointment DA
left outer join tblDiaryAppointmentClinicianInvitee CI on DA.Diary_Appointment_ID = CI.Diary_Appointment_ID
left outer join tblstaff ST on CI.Clinician_Invitee_Staff_ID = ST.STaff_ID
left outer join tbllocation LOC on LOC.Location_ID = DA.Scheduled_Location_ID
left outer join tblpatient PAT on PAT.Patient_ID = DA.Patient_ID
left outer join tblAttendanceTypeValues ATV on ATV.Attendance_Type_ID = DA.Attendance_Type_ID
left outer join tblDiaryAppointmentScheduledEvent SE on SE.Diary_Appointment_ID = DA.Diary_Appointment_ID
left outer join tblEventValues EVE on EVE.Event_ID = SE.Event_ID
left outer join tblProfessionalGroupValues PGV on ST.Professional_Group_ID = PGV.Professional_Group_ID
left outer join tblStaffJobRoleCodeValues JOB on JOB.Staff_Job_Role_Code_ID = ST.Job_Role_Code_ID
left outer join tblReferral REF on REF.Patient_ID = DA.Patient_ID
GROUP BY ST.Staff_ID