tansx 2025-10-30 12:25 采纳率: 50%
浏览 3
已结题

求MS SQL SERVER 语句写法

sQL记录:
姓名 出勤情况
张三 迟到
张三 早退
李四 迟到
李四 早退
李四 请假

要求查询结果:
姓名 出勤情况 记录条数
张三 迟到 2
张三 早退 2
李四 迟到 3
李四 早退 3
李四 请假 3

说明:“记录条数"为同姓名的记录合计。求以上查询结果的SQL语句

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-10-30 12:37
    关注

    让【宝码香车】来帮您解答,本回答参考DeepSeek编写,并整理提供。

    如果答案让您满意,请采纳、点赞、关注,非常感谢!
    .
    每日一句正能量,让它带给您好心情:生活就像一杯白开水,你往里面加什么,它就是什么味道。
    .

    根据您的需求,需要统计每个姓名对应的总记录数,并显示每个人的出勤情况明细。以下是实现该查询的SQL语句:

    SELECT 
        姓名,
        出勤情况,
        COUNT(*) OVER(PARTITION BY 姓名) AS 记录条数
    FROM 考勤表
    ORDER BY 姓名, 出勤情况;
    

    语句说明:

    1. COUNT(*) OVER(PARTITION BY 姓名) 是窗口函数,它会按姓名分组计算每个分组内的总记录数
    2. PARTITION BY 姓名 表示按姓名字段进行分组
    3. 窗口函数不会改变结果集的行数,所以每个人的每条记录都会显示,但记录条数会显示该姓名对应的总记录数
    4. ORDER BY 用于对结果进行排序,便于查看

    示例验证:

    假设您的表名为考勤表,包含的数据如下:

    姓名出勤情况
    张三迟到
    张三早退
    李四迟到
    李四早退
    李四请假

    执行上述SQL语句后,将得到以下结果:

    姓名出勤情况记录条数
    李四迟到3
    李四早退3
    李四请假3
    张三迟到2
    张三早退2

    这样就实现了您要求的查询效果,每个人的每条出勤记录都会显示,同时"记录条数"列显示该姓名对应的总记录数。

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

报告相同问题?

问题事件

  • 系统已结题 11月7日
  • 已采纳回答 10月30日
  • 创建了问题 10月30日