gpt4 book ai didi

sql - 获取每个员工缺勤记录的值

转载 作者:行者123 更新时间:2023-11-29 12:54:32 25 4
gpt4 key购买 nike

我有两个表:

表 1 - 员工 promise 此表描述了员工投入时间的百分比。

列:

  • 日期:他们投入时间的日期。
  • 员工:员工用户名
  • promise :例如20% 表示员工计划将 20% 的日常时间用于工作

表 2 - 日历该表基本上是一个日历,一年中的每一天都有一行。

列:

  • Calendar_Date
  • 包括:一个二进制列,指示此日期是否为工作日(例如,如果这一天是周末或假日,则值为 0,否则为 1)

EmployeeCommitment 表不包含员工没有 promise 的日子,这是非常合理的,因为只有当有人 promise 工作时它才会得到一个新行,而不是相反。

但我想要的是为员工未 promise 任何工作的每一天获取一行。例如。如果员工 john.smith 本周只工作了 3 天(montuewed),他thufri 应该有两行(假设这是正常的一周,没有假期)包含他的名字和 0% 的 promise ,总共 5本周的行数。

我试过这样连接两个表

SELECT * FROM  Calendar c LEFT JOIN EmployeeCommitment e ON c.Calendar_Date=EmployeeCommitment.Date

但是这个 JOIN 为我提供了右侧表格的 null 列,并且无法知道它们属于哪个员工。

最佳答案

您需要使用cross join 生成所有行,然后引入您想要的信息。 . .例如,使用 left join:

SELECT c.*, e.employee, COALESCE(ec.commitment, 0) as commitment
FROM Calendar c CROSS JOIN
(SELECT DISTINCT Employee FROM Employees e) e LEFT JOIN
EmployeeCommitment ec
ON c.Calendar_Date = ec.Date AND
e.Employee = ec.Employee;

关于sql - 获取每个员工缺勤记录的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46573851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com