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