ross_liu 2020-09-19 19:37 采纳率: 20%
浏览 57
已采纳

如何通过SQLSERVER语句得到如下结果。

图片说明

  • 写回答

4条回答 默认 最新

  • 猫狸嘎 2020-09-22 10:44
    关注

    我的方法有点繁琐,每一步的操作都用临时表装起来了,你可以以此执行查看每一个临时表来看懂整个操作的逻辑。我能力有限,这不一定是tsql的最优解,可以参考下

    IF OBJECT_ID('TEMPDB..#Tab1') IS NOT NULL
    DROP TABLE #Tab1
    select * into #Tab1 from (
    select sfcno = 10, time = '08:00' 
    union all
    select sfcno = 10, time = '08:10' 
    union all
    select sfcno = 11, time = '08:30' 
    union all
    select sfcno = 22, time = '09:10' 
    union all
    select sfcno = 33, time = '10:10' 
    union all
    select sfcno = 44, time = '11:10' 
    union all
    select sfcno = 555, time = '11:30' 
    
    ) as Tab1
    
    IF OBJECT_ID('TEMPDB..#Tab2') IS NOT NULL
    DROP TABLE #Tab2
    select * into #Tab2 from (
    select 
    time = case when left(time,1)=0 then substring(time,2,1)+':00-'+cast(substring(time,2,1)+1 as nvarchar)+':00' 
    else substring(time,1,2)+':00-'+cast(substring(time,1,2)+1 as nvarchar)+':00' end
    ,sfcno
    from 
    #Tab1
    group by 
    case when left(time,1)=0 then substring(time,2,1)+':00-'+cast(substring(time,2,1)+1 as nvarchar)+':00' 
    else substring(time,1,2)+':00-'+cast(substring(time,1,2)+1 as nvarchar)+':00' end
    ,sfcno
    ) as Tab2
    
    IF OBJECT_ID('TEMPDB..#Tab3') IS NOT NULL
    DROP TABLE #Tab3
    select * into #Tab3 from (
    select
    time
    ,sfcno = (Select cast(a2.sfcno as varchar)+',' from #Tab2 as a2 where a2.time = a1.time for xml path('')) 
    from
    #Tab2 as a1  
    group by 
    time
    ) as Tab3
    
    select * from #Tab3 pivot (max(sfcno) for time in ([8:00-9:00],[9:00-10:00],[10:00-11:00],[11:00-12:00])) b
    

    最后执行结果比较贴近。可以利用substring与len函数来消除末尾多余的逗号,这里就不继续下去了。如果需要代码我可以继续贴上去。
    图片说明

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

报告相同问题?

悬赏问题

  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码