sql - 如何根据条件生成列的范围

标签 sql sql-server powerbi window-functions gaps-and-islands

有一列数字 - 我想开发一个报告,将该列的值分类为范围(下限和上限)。如果值的差异超过 10,则必须进行这种拆分。 Power BI 或 SQL Server 中的查询是否可以实现这一点?

Current column structure

Required Structure

最佳答案

GMB 的解决方案绝对是解决此问题的规范方法,将其视为间隙和岛屿的变体。我想知道是否有办法在没有两级子查询的情况下做到这一点。还有:

select coalesce(lag(next_x) over (order by x), first_x) as lower,
       x as upper
from (select t.*,
             first_value(x) over (order by x) as first_x,
             lead(x) over (order by x) as next_x
      from t
     ) t
where next_x is null or next_x > x + 10;

Here是一个db<> fiddle 。

比较大量数据的性能会很有趣——2 个窗口函数 + 聚合与 3 个窗口函数 + 过滤。

关于sql - 如何根据条件生成列的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59881117/

相关文章:

sql - 日期时间值生成 MS SQL

php - 关于某些模板的数组排列

sql-server - AppHarbor - 多个应用程序中的同一 SQL Server

MySQL, MSSQL - SymmetricDS

powerbi - 在一个 Power BI 可视化中应用顶部和底部 N

sql - SQL连接与复合主键

sql - sql-server 的 dbext 连接字符串

定义表列时 SQL 连接停止工作

sql-server - 生成 Power BI 文档

Powerbi REST API 添加行