TSQL - сравнение сгруппированных значений в таблице - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно сравнить сгруппированные данные, чтобы найти сдвиги в вычисленном значении.Вывод моего текущего 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.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018
        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' 
0 голосов
/ 04 октября 2018

Вы можете использовать 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 
...