首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中选择有出勤条件的完整月历?

如何在MySQL中选择有出勤条件的完整月历?
EN

Stack Overflow用户
提问于 2021-11-29 01:17:28
回答 1查看 50关注 0票数 0

日安!我试着搜索整个堆栈溢出的问题,但我找不到合适的关键字搜索,我想更好的要求你们的帮助。

我正在试图创建一个基于两个表的出席历史:

table

  • calendar_dimension
  1. 考勤表

出勤表的数据如下所示

代码语言:javascript
复制
|  idnumber   |   punchin   |   punhout   |  date_created  |
+-------------+-------------+-------------+----------------+
|   0002      |    7:30:00  |   16:00:00  |   2021-11-27   |
|   0003      |    7:30:00  |   16:00:00  |   2021-11-27   |
|   0004      |    7:30:00  |   16:00:00  |   2021-11-27   |


|   0002      |    7:30:00  |   16:00:00  |   2021-11-28   |
|   0003      |    7:30:00  |   16:00:00  |   2021-11-28   |
|   0004      |    7:30:00  |   16:00:00  |   2021-11-28   |

|   0001      |    7:30:00  |   16:00:00  |   2021-11-29   |
|   0002      |    7:30:00  |   16:00:00  |   2021-11-29   |
|   0003      |    7:30:00  |   16:00:00  |   2021-11-29   |
|   0004      |    7:30:00  |   16:00:00  |   2021-11-29   |

calendar_dimension只是一个包含日期的基本表,如下所示:

请注意,这是一个完整的月日历:

代码语言:javascript
复制
|    date     |   datestatus  |
+-------------+---------------+
| 2021-11- 1  to  2021-11-25  |
| 2021-11-26  |   Holiday     |
| 2021-11-27  |               |
| 2021-11-28  |               |
| 2021-11-29  |               |
| 2021-11-30  |               |

到目前为止,我所做的是通过加入calendar_dimension和考勤表。

现在,我有这样的事情:例如00001,它正在为我工作:

代码语言:javascript
复制
|  idnumber   |   punchin   |   punhout   |  date_created  |
+-------------+-------------+-------------+----------------+
|   0001      |    7:30:00  |   16:00:00  |   2021-11-29   |

至于0002:

代码语言:javascript
复制
|  idnumber   |   punchin   |   punhout   |  date_created  |   Status   |
+-------------+-------------+-------------+----------------+------------+
|   0001      |    7:30:00  |   16:00:00  |   2021-11-27   |  Present   |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-28   |  Present   |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-29   |  Present   |

我想让我的历史表看起来像这样:

代码语言:javascript
复制
|  idnumber   |   punchin   |   punhout   |  date_created  |   Status   |
+-------------+-------------+-------------+----------------+------------+
|                      2021-11-1 to 2021-11-25                          |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-26   |  Holiday   |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-27   |  Absent    |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-28   |  Absent    |
|   0001      |    7:30:00  |   16:00:00  |   2021-11-29   |  Present   |

11月30日将于明天展出。

还有其他办法让这一切成为可能吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-29 01:31:09

我假设你是在计算status列,对吗?

一些类似于IF(datestatus = 'Holiday', 'Holiday', IFNULL(punchin, 'Absent', 'Present')) AS status的东西应该可以工作,尽管它有点不雅。

你必须确保你没有做一个内部连接来得到一个没有出席的行,例如,calendar_dimension c LEFT JOIN attendance a ON ...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70148848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档