我正在尝试创建一个报告以提供来自 SQL Server 数据库的数据。我有 3 张我感兴趣的表格,客户、推荐人、约会。客户可以有 1.* 推荐,推荐可以有 0.* 预约。
在我的报告中,我想显示从收到推荐到第一次约会的平均时间。
我在我的存储过程中尝试上述方法,但收到“无法对包含聚合或子查询的表达式执行聚合函数”。
有没有一种巧妙的方法可以在没有您能想到的子查询的情况下使其工作?
编辑下面的粗略表结构。
客户 ClientID INT IIDENTITY (pk) Forename VARCHAR(50) Surname VARCHAR(50) DOB DATETIME
Referral ReferralID INT IDENTITY (pk) ClientID INT (fk) ReferralRequestReceivedDate DATETIME OrgaisationAreaId INT (fk)
Appointment AppintmentID INT IDENTITY (pk) ReferralId INT(fk) AppointmentDate DATETIME AttendanceTypeId INT (fk) AppointmentTypeID INT (fk)
AttendanceTypes AttendanceTypeID INT IDENTITY (pk) 名称 VARCHAR(50)
AppointmentTypes AppointmentTypeID INT IDENTITY (pk) 名称 VARCHAR(50)
OrganisationArea OrgaisationAreaId INT IDENTITY(pk) 名称 VARCHAR(50)
我现有的 proc 有按年龄和出勤类型出席的约会计数,如下所示......
SELECT OA.Name,
COUNT(CASE WHEN AppointmentTypeId IN(1,3)
AND AppointmentDate BETWEEN '27 Jan 2013' AND '13 Apr 2013'
THEN AppointmentId END) AS AppsBooked,
AVG(DATEDIFF(d, ReferralRequestReceivedDate, MIN(A.AppointmentDate)))
AS AvgAllocationWaitTime
FROM OrganisationAreas OA
LEFT OUTER JOIN Clients C
ON OA.OrganisationAreaId = C.OrganisationAreaId
LEFT OUTER JOIN IaptReferrals R
ON C.ClientId = R.ClientId
LEFT OUTER JOIN IaptAppointments A
ON R.IaptReferralId = A.Referral_IaptReferralId
GROUP BY OA.OrganisationAreaId, OA.Name