加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

基于序列对结果进行分组的SQL查询

发布时间:2020-12-12 16:28:00 所属栏目:MsSql教程 来源:网络整理
导读:我有这样的表: ID Seq Amt1 1 5001 2 5001 3 5001 5 5002 10 6002 11 6003 1 7003 3 700 我想将连续序列号分组成一行,如下所示: ID Start End TotalAmt1 1 3 15001 5 5 5002 10 11 12003 1 1 7003 3 3 700 请帮助实现这一结果. 解决方法 WITH numbered AS (
我有这样的表:
ID  Seq  Amt
1   1    500
1   2    500
1   3    500
1   5    500
2   10   600
2   11   600
3   1    700
3   3    700

我想将连续序列号分组成一行,如下所示:

ID  Start  End  TotalAmt
1   1      3    1500
1   5      5    500
2   10     11   1200
3   1      1    700
3   3      3    700

请帮助实现这一结果.

解决方法

WITH numbered AS (
  SELECT
    ID,Seq,Amt,SeqGroup = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Seq) - Seq
  FROM atable
)
SELECT
  ID,Start = MIN(Seq),[End] = MAX(Seq),TotalAmt = SUM(Amt)
FROM numbered
GROUP BY ID,SeqGroup
ORDER BY ID,Start
;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读