weixin_42853935 2019-04-12 11:28 采纳率: 87.5%
浏览 426
已采纳

sql server 的语句统计外包人员出勤时间

图片说明

需要sql语句将这张表
name 姓名 dept部门组织 date 考勤日期 timeTotal 工时总计
这四个栏位的数据组成如下图的查询结果。
需求:
每个月1-31天所有的数据对应栏位显示,最上面那个2019-04的抬头和每个人的最后total工时总计可以不用计算。只要帮我拼出sql语句就好了,应该是个交叉报表,可能高手还要指导我一下怎么虚拟出一个月31个日的列名,请高手提供完整的思路最好是代码,感谢

图片说明

可以用临时表的存储过程来做,也可以新增一张实体表,抬头是月的每日固定列,请高手多多指点

  • 写回答

2条回答 默认 最新

  • o(╯□╰)o ! 2019-04-12 11:58
    关注

    图片说明

    SELECT
        t.dept,
        t.name,
        MAX ( CASE WHEN RIGHT(t.[date], 2) = '01' THEN t.timeTotal END ) '1',
        MAX ( CASE WHEN RIGHT(t.[date], 2) = '02' THEN t.timeTotal END ) '2',
        MAX ( CASE WHEN RIGHT(t.[date], 2) = '03' THEN t.timeTotal END ) '3' 
    FROM
        Test t 
    GROUP BY
        t.dept, t.name
    

    RIGHT(t.[date], 2) // 从右往左截取2个字符串

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?