w2834098992 2023-03-27 08:57 采纳率: 50%
浏览 52
已结题

sql 数据库 数据循环展示 ,并根据时间参数筛选

原数据,可以填报,后期数据会变动,新增或减少

img


想实现的功能,比如厂级有6条数据,就六天一循环,电工有4条数据,就四天一循环,后期数据源变化,循环天数也跟着变化

img

  • 写回答

3条回答 默认 最新

  • 文盲老顾 WEB应用领新星创作者 2023-03-27 09:50
    关注

    sqlserver 可以用下列方法

    img

    
    
    with t as ( -- 原始数据
        select 1 as id,'aaa' name,'A' job
        union all select 2,'aba','A'
        union all select 3,'xxz','A'
        union all select 4,'fee','B'
        union all select 5,'3fee','B'
        union all select 6,'f5ee','B'
        union all select 7,'f4ee','B'
        union all select 8,'fe8e','B'
        union all select 9,'fe0e','B'
        union all select 16,'tte','Bc'
        union all select 17,'xtxt','Bc'
        union all select 18,'uyuy','Bc'
        union all select 19,'zzz','Bc'
    ),t1 as ( -- 按job划分每个人需要的值班序号
        select *,row_number() over(partition by job order by id) wid from t
    ),t2 as ( -- 获得每个班有多少人进行轮班
        select job,max(wid) nums from t1 group by job
    )
    select * -- 最后按照班列出今天需要排班的人
    from (
        select name,a.job 
        from t1 a
        left join t2 b on a.job=b.job
        -- 获得自2023年3月1日开始排版后,今天需要排班的人员
        where datediff(d,'2023-3-1',getdate()) % nums = wid - 1
    ) a
    pivot(max(name) for job in (A,B,Bc)) p -- 这里需要把所有的班名都列出
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单