好吧,我可能也早些时候发布了这个,但到目前为止找不到答案,所以请帮我解决这个问题。
我的数据库结构:
ATT(Activity
表)
- Act_ID(PK)
- Assigned_To_ID (FK, 参考
Emp_ID
) - Project_ID (FK, 参考
Project_ID
) - Product_ID (FK, 参考
Product_ID
) - 状态(可以
New, OnHold, Cancel, Closed
)
产品_桌子
- Product_ID (PK)
- 产品名称
项目表
- Project_ID (PK)
- 项目名
Employee_Table
- Emp_ID (PK)
- F_名称。
约束
- In 1 Project --> 多个员工可以工作
- 1 位员工 --> 可以分配多个活动 (
Act_ID
) - 在任何给定的时间点
Status
可以是任何给定的值
现在在我的 SQL 查询中,我想做的是负载检查::
活动(由 表示Act_ID
)分配给员工,由 表示Assigned_To_ID
,对于项目(Project_ID
在ATT_Table
)和特定状态。我需要从我的 SQL 查询中输出 5 个值:
- 员工的名字
- 项目名称
- 分配给员工(在 A 中)的总活动数。
- 为员工(在 A)分配的活动数量,其中状态为新建或处理中。
- 加载。那将是 = C/D * 100(C 比 D 大,这是显而易见的。)
现在可能有一个条件,一个员工假设 E1 正在处理项目 P1,P2。所以我的表输出将如下所示:
A B C D E
E1 P1
E1 P2
所以这里 C、D、E 将具有与该项目的活动相对应的值(P1 或 P2)
到目前为止我已经尝试过了::
SELECT
F_Name AS A,
Project_Name AS B,
Count(Act_ID) AS C,
Count(Act_ID) AS D
FROM
Employee_Table, ATT_Table, Project_Table
WHERE
ATT_table.[Assigned_To_ID] = Employee_Table.[Emp_ID]
AND Project_Table.[Project_ID] = ATT_Table.[Project_ID]
AND Count(Act_ID) IN (SELECT Count(Act_ID)
FROM ATT_Table
WHERE ATT_Table.[Status] <> 'Closed'
AND ATT_Table.[Status] <> 'OnHold')
GROUP BY
F_Name, Project_Name;
我得到了 A、B、C。但是当我尝试查找用于状态检查的活动时,我无法执行此查询,因为它给了我一条消息,无法在 WHERE 子句中写入计数。请帮我解决这个问题。谢谢..