SQLite вычислить разницу между двумя строками с условием
У меня есть таблица tb1
id(KEY) | idprod | allregion |
---|---|---|
1 | 34 | 28 |
2 | 34 | 142 |
3 | 44 | 3 |
4 | 44 | 16 |
5 | 65 | 1132 |
6 | 65 | 768 |
Мне нужно вычислить разницу значений allregion между одинаковыми idprod и поместить это в столбик diff. Должно получиться вот так:
id(KEY) | idprod | allregion | diff |
---|---|---|---|
1 | 34 | 28 | 0 |
2 | 34 | 142 | 114[142-28] |
3 | 44 | 3 | 0 |
4 | 44 | 16 | 13[16-3] |
5 | 65 | 1132 | 0 |
6 | 65 | 768 | -364[768-1132] |
*[в скобках указан пример вычислений]
Мой код
SELECT id, idprod, allregion,
CASE WHEN idprod = LAG(idprod, 1) OVER (ORDER BY idprod desc, id desc)
THEN (allregion - LAG(allregion, 1) OVER (ORDER BY id desc)) ELSE '0'
END AS diff
FROM tb1
выдает таблицу с нулевыми значениями allregion
id(KEY) | idprod | allregion | diff |
---|---|---|---|
1 | 34 | 0 | 0 |
2 | 34 | 0 | 114[142-28] |
3 | 44 | 0 | 0 |
4 | 44 | 0 | 13[16-3] |
5 | 65 | 0 | 0 |
6 | 65 | 0 | -364[768-1132] |
и я не могу понять почему, помогите, пожалуйста
Источник: Stack Overflow на русском