我想创建一个报表来提供来自SQL Server数据库的数据。我有3个表格我感兴趣,客户,推荐,任命。客户可以有1. *推介,推荐可以有0. *约会预约。AVG(DATEDIFF(d,Tabl1.date1,MIN(Table2.date1)))T-SQL
在我的报告中,我想展示从接受推荐到第一次约会的平均时间。
我在我的存储过程中尝试上述,但收到“无法对包含聚合或子查询的表达式执行聚合函数”。
有没有一种很好的方式来让这个工作没有你能想到的子查询?
编辑下面的粗糙表结构。
客户 ClientID的INT的IIdentity(PK) 用名字VARCHAR(50) 姓VARCHAR(50) DOB DATETIME
推荐 ReferralID INT IDENTITY(PK) ClientID的INT(FK) ReferralRequestReceivedDate DATETIME OrgaisationAreaId INT(fk)
约会 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
是什么这些表的结构?什么键链接在一起? – 2013-04-22 20:26:43
为什么你想这个工作没有子查询? – 2013-04-23 05:35:26