首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为Sql Server行中的一系列常量更改生成序列号

如何为Sql Server行中的一系列常量更改生成序列号
EN

Stack Overflow用户
提问于 2021-01-12 14:57:18
回答 2查看 26关注 0票数 0

我需要第一个TSL发送者与后续供应商和下一个第一个TSL作为供应商的下一个后续发送者的日期差异

期望输出

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-12 21:14:20

您可以通过计算每行上或之后的'Vendor'值的数量来为行分配分组。然后每个分组都以'Vendor'结束,您可以在该组中使用窗口函数:

代码语言:javascript
运行
复制
select t.*,
       (case when sender = 'vendor'
             then datediff(second,
                           min(date) over (partition by grp),
                           max(date) over (partition by grp)
                          ) / (24 * 60 * 60.0)
        end) as diff
from (select t.*,
             sum(case when sender = 'Vendor' then 1 else 0 end) over (order by id desc) as grp
      from t
     ) t;
票数 1
EN

Stack Overflow用户

发布于 2021-01-12 15:17:43

因此,您想要TSL更改为Vendor的天数之差。您可以按如下方式使用分析函数:

代码语言:javascript
运行
复制
select t.*,
       case when sender = 'Vendor' 
            then DATEDIFF(hour, date, first_value(date) over (partition by rn - rn_s order by date) ) / 24.0 end as diff
  from
(select t.*,
       row_number() over (order by date) as rn,
       row_number() over (partition by sender order by date) as rn_s
  from yout_table t) t
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65679277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档