基本上我试图做的,有一个日期范围(月)内有适用的服务的用户使用SUM
我希望能够显示用户的可用时间的服务(在小时),以及有多少小时,他们已安排基础
所以我希望它基本上看起来像
user service available scheduled
-----------------------------------------------------------------
User1 Service1 120 7
User1 Service2 40 0
的计划列通过采取SUM
的Start
的计算,持有约会数据表和End
字段在我的Appointment
表中。
现在我的问题是,如果没有安排约会,我不确定如何仍然显示我想要的信息。
表之间的关系如下:每个用户
- 1 NOA
- 每NOA多业务
1每服务FormType
预约保持FormTypeID作为
FK
- ClientAppointment包含AppointmentID和UserID(与分配的NOA相同的用户)
SELECT
--NOA
noa.noaID, noa.userID as 'ClientUserID',
--Service
service.BillingCode + service.MOD1 + service.MOD2 + service.MOD3 + service.MOD4 AS BillingCode, service.FormTypeID, service.StartDate, service.EndDate, service.CurrentUnits, service.Adjustment,
--Scheduler
scheduler.*
FROM LEL_NOA noa
LEFT JOIN LEL_Service service ON service.noaID = noa.noaID
LEFT OUTER JOIN
(
SELECT ca.ClientID, SUM(DATEDIFF(second, a.Start, a.[End])/3600) as ScheduledUnits FROM LEL_Scheduler_Appointment a
LEFT JOIN LEL_Scheduler_ClientAppointment ca ON a.ApptID = ca.ApptID
WHERE a.Start BETWEEN '1/1/2012' and '1/31/2012'
AND a.[End] BETWEEN '1/1/2012' and '1/31/2012'
GROUP BY ca.ClientID
) AS scheduler ON noa.UserID = scheduler.ClientID
WHERE noa.UserID = 4
AND service.StartDate BETWEEN '1/1/2012' and '1/31/2012'
AND service.EndDate BETWEEN '1/1/2012' and '1/31/2012'
ORDER BY 'ClientUserID', BillingCode, FormTypeID, StartDate
上述程序将会重新拉开大月,21 availabl,7计划,但有UserID = 4
的人对那段时间的另一个服务和我想显示信息与0小时计划作为我的表中的下一个项目。
(noaID, ClientUserID, BillingCode, FormTypeID, StartDate, EndDate, CurrentUnits, Adjustment, ScheduledUnits) VALUES
(203, 25, 'x888', 6, '4/16/2012 4:24:19 PM', '4/16/2012 4:24:19 PM', 0, 0, 5.000000),
(203, 25, 'x999', 1, '4/1/2012 12:00:00 AM', '4/30/2012 12:00:00 AM', 10, 0, 5.000000)
的问题是,第一个条目,没有安排任何的约会,但但它仍然显示5(其中第二总和是正确的)
你可以发布一些样本数据和所需的o/p吗? – Teja 2012-04-19 17:38:46
添加到底部,INSERT格式 – dgarbacz 2012-04-19 18:42:51