SQL考勤报表求助

tommyqxx 2016-02-25 02:24:41
现在有两张表,表1,表2

表1是全量的时间:
日期: 节日:
20150201 周日
20150202
20150203
20150204
。。。
20150227
20150228 周六

表2是员工打卡记录
日期: 姓名: 上班: 下班:
20150202 张三 9:00 18:00
20150202 张三 9:00 18:00
20150204 张三 9:00 18:00
。。。
20150227 张三 9:00 18:00
20150228 张三 9:00 18:00

要求是显示如下格式的报表,如果员工那一天没有出勤记录则显示“没来”,但是报告中日期都要有
如何用sql语言显示出如下格式的报表呢?

日期: 节日 姓名: 上班: 下班: 注释:
20150201 周日 张三 没来
20150202 张三 9:00 18:00
20150203 张三 没来
20150204 张三 9:00 18:00
。。。
20150227 张三 9:00 18:00
20150228 周六 张三 9:00 18:00 加班
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfvba 2016-02-26
  • 打赏
  • 举报
回复
select a.*,b.姓名,c.上班,c.下班,注释=case when isnull(c.上班,'')='' then '没来' else '' end from 表1 a cross apply (select distinct 姓名 from 表2) b left join 表2 c on a.日期=c.日期 and b.姓名=c.姓名
tommyqxx 2016-02-26
  • 打赏
  • 举报
回复
多谢2楼,已解决
顾西昂 2016-02-25
  • 打赏
  • 举报
回复

select 表一.日期,表一.节日,姓名,上班,下班,(case when 上班 is null then '没来' else '' end )注释 from 表一 cross join 表二  on 表一.日期=表二.日期

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧