【发布时间】:2017-11-16 11:31:04
【问题描述】:
我有一个数据库,其中记录了我们为企业各个部门完成的所有工作。
表 1 是部门 - 这将存储部门的名称及其 ID
表 2 是部分——这将部分的名称与它的 ID 一起存储(一个部门可能有几个部分)
表 3 是用户 - 完成任务的人的姓名,以及任务所在的部门和部门 ID)
表 4 是完成日期 - 其中包含完成任务的人员的姓名和提交到系统的日期
大老板要我提供一份报告,详细说明每个部门和部门在特定时间范围内提交了多少工作。
到目前为止,我得到了这个:
SELECT Dept.DepartmenttId,
Name.SectionId,
count (Name.DepartmentId)
FROM Name
LEFT join Job on Name.UserId = Job.UserId
WHERE Job.DateSubmitted > '2017-09-01 00:00:00.000' and Job.DateSubmitted <'2017-09-30 23:59:59.000'
Group by Name.DepartmentId, Name.SectionId
这给了我这样的结果:
BOB 2 3
STEVE 1 2
我在其中获取人员姓名以及部门 ID 和部门 ID。
我想要的是:
Bob IT Development
所以我可以看到部门和部门的名称,而不是 ID。
我一直在玩连接,但我尝试的一切都打破了计数部分。有没有办法在一个查询中获取计数和名称?到目前为止,我的结构是否有问题?
当前表格:
部门
DepartmentId :: DepartmentName
1 :: IT
2 :: Marketing
3 :: Finance
部分
SectionId :: SectionName
1 :: Development
2 :: Helpdesk
3 :: Architecture
4 :: Procurement
名字
Name :: JobId :: DepartmentId :: SectionId
Bob :: J1234 :: 1 :: 2
Steve :: J1235 :: 3 :: 4
工作
JOBId :: DateSubmitted
J1234 :: 02/09/2017
J1235 :: 04/09/2017
【问题讨论】:
-
如果没有看到表结构和/或示例数据,很难回答这个问题。我什至不知道您还需要为部门等引入哪些其他专栏。
-
你不需要 COUNT() 函数
-
那么有没有其他方法可以获取计数信息?
标签: sql sql-server tsql