Как получить разницу между двумя последовательными строками для поля столбца, используя группу, и порядок по

голоса
1

Empno Отдел продаж 1 10 9 2 20 7 1 10 10 1 10 5 3 10 3 3 10 8 1 10 11 4 30 5 4 30 5

Empno Отдел продаж Рост 1 10 5 5 1 10 9 4 1 10 10 1 1 10 11 1 3 10 3 3 3 10 8 5 2 20 7 7 4 30 5 5 4 30 6 1

Задан 07/11/2018 в 20:00
источник пользователем
На других языках...                            


1 ответов

голоса
0

Вы можете использовать , LAGчтобы получить последнее значение , разделенное работником, но вам нужно дополнительный столбец (например , идентификатор или дату) , чтобы заказать столбцы. Это простой пример с только первые несколько записей вашего примера (добавление idстолбца):

SELECT *,
    Sales - LAG(Sales, 1, 0) OVER (PARTITION BY EmpNo ORDER BY Id) AS Growth
FROM SalesData

С данными выборки

;WITH SalesData (Id, EmpNo, Dept, Sales) AS (
    SELECT 1, 1, 10, 9
    UNION ALL SELECT 2, 1,10, 10
    UNION ALL SELECT 3, 2, 10, 7
)
    SELECT *,
        Sales - LAG(Sales, 1, 0) OVER (PARTITION BY EmpNo ORDER BY Id) AS Growth
    FROM SalesData

Этот пример производит:

Id          EmpNo       Dept        Sales       Growth
----------- ----------- ----------- ----------- -----------
1           1           10          9           9
2           1           10          10          1
3           2           10          7           7
Ответил 07/11/2018 в 20:11
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more