连接表以获取总和 - SQL/Access
Posted
技术标签:
【中文标题】连接表以获取总和 - SQL/Access【英文标题】:Joining Tables to Get Sums - SQL/Access 【发布时间】:2015-11-24 18:03:18 【问题描述】:我正在为我们的呼叫中心创建一个 Access 数据库。现在有四个表:
MASTERTABLE:DisplayName、CLOCKid(PrimaryKey)、PHONEid
ROSTERTABLE: CLOCKid (ForeignKey), StartDate, EndDate
电话日志:PHONEid、DateStamp、StatusHours
TIMECLOCK:CLOCKid、DateStamp、HoursByDay
Mastertable 为每个唯一员工提供一行。它包含每个员工的各种 ID/用户名,用于上面列出的内容和其他项目。 Rostertable 包含每个员工职位的一行——随着时间的推移,员工可以有多个职位,由 StartDate 和 EndDate 指示,因此是多行。这样我们就可以保留可以查询的历史记录。 PhoneLog 是从我们的电话系统输入的。每个用户有多条线路,代表每个电话状态用户在该状态中花费的时间。 TimeClock 类似;员工每天工作一排。
我需要在 Microsoft Access 2013 中创建一个查询,最好使用 SQL,这将为我提供每个人在其花名册开始/结束时间内的 TimeClock 小时数的总和,以及他们的电话小时数。因此,生成的查询将列出 RosterTable 中的每个员工、他们的电话时间总和以及他们的付费时间总和。
希望这是有道理的。如果有人有问题/需要澄清,请告诉我。
【问题讨论】:
示例数据?你试过什么了?这里的大多数用户不会为您编写代码,但很乐意找出您的尝试有什么问题。 请阅读How to ask和How to create a Minimal, Complete, and Verifiable example.这是一个很好的起点spaghettidba.com/2015/04/24/… 【参考方案1】:SELECT MT.DisplayName, Sum(PL.StatusHours) as PhoneHours, Sum(TC.HoursByDay) as PaidTime
FROM MASTERTABLE MT
INNER JOIN ROSTERTABLE RT
ON MT.ClockID = RT.ClockID
LEFT JOIN PHONELOG PL
ON MT.PhoneID = PL.PhoneID
LEFT JOIN TIMECLOCK TC
ON MT.ClockID = TC.ClockID
WHERE RT.StartDate >= YourStartDate
AND RT.EndDate =< YourEndDate
您只需要定义 YourStartDate 和 YourEndDate,它们可以是表单上的文本框或查询中的输入框,甚至是从另一个表内部连接的。
【讨论】:
以上是关于连接表以获取总和 - SQL/Access的主要内容,如果未能解决你的问题,请参考以下文章