TSQL - 比较 table 中的分组值

TSQL - comparing grouped values within a table

我需要比较分组数据以查找计算值的变化。我当前 SQL 的输出看起来像这样...

Grp_ID_1 / Metric / State / Value
A   Metric1 OH  50
B   Metric1 OH  65
A   Metric1 CA  20
B   Metric1 CA  35

在上面的示例中,我需要计算 A-Metric1-OH 值 50 和 B-metric1-OH 值 65 之间的差值。

您可以使用 LEAD 来计算行之间的差异。

SELECT LEAD(State, 1,0) OVER (ORDER BY Grp_ID_1 ) AS NextState ,
State - LEAD(State, 1,0) OVER (ORDER BY Grp_ID_1 ) AS StateDif
FROM yourTable 
        SELECT  grp_ID_1, metric, state, value,       
                (SELECT  MAX(value) 
                    FROM tablename   
                 ) - value AS Difference

        FROM tablename  group by state, grp_ID_1, metric, value  
        having state = 'OH'