Мне нужна ваша помощь, чтобы рассчитать количество дней между двумя строками на основе изменения значения в том же столбце
Вот моя исходная таблица
USER_ID LOGIN_DATE USER_AGNT_STR
-----------------------------------------------------------------------------------------------------------------
100033 2020-02-18 {'HTTP_USER_AGENT':'/x.x.x Version x.0, build 14623 (iPhoneX;Apple iPhone10,3; iOS 13.3.1)'}
100033 2020-02-19 {'HTTP_USER_AGENT':'/x.x.x Version x.0, build 14623 (iPhoneX;Apple iPhone10,3; iOS 13.3.1)'}
100033 2020-02-19 {'HTTP_USER_AGENT':'/x.x.x Version x.1, build 14624 (iPhoneX;Apple iPhone10,3; iOS 13.3.1)'}
100056 2020-02-20 {'HTTP_USER_AGENT':'/x.x.x Version x.0, build 14623 (iPhoneX;Apple iPhone10,3; iOS 13.3.1)'}
100056 2020-02-21 {'HTTP_USER_AGENT':'/x.x.x Version x.1, build 14624 (iPhoneX;Apple iPhone10,3; iOS 13.3.1)'}
Я написал приведенный ниже код для получить версию приложения с помощью функции подстроки, но я все еще не могу найти способ подсчитать количество дней, в течение которых пользователю потребовалось перейти с x.0 на x.1. Пожалуйста, помогите
DECLARE @t as DATE = '2020-02-25'
SELECT DISTINCT
A.USER_ID, LOGIN_DATE,
SUBSTRING(user_agnt_str,
CHARINDEX(' version ', user_agnt_str) + 9,
CHARINDEX(' ', user_agnt_str, CHARINDEX(' version ', user_agnt_str) + 9)
- CHARINDEX(' version ', user_agnt_str) - 10) AS APP_VERSION
FROM
[DB1].[dbo].[TABLE1]
WHERE
(USER_AGNT_STR LIKE '%version %' OR USER_AGNT_STR LIKE '%Version %')
AND CAST(LOGIN_DATE AS DATE) BETWEEN DATEADD(DAY, -7, @t) AND @t
AND USER_ID IN (100033, 100056)
Результат, который я получаю от этого запроса:
USER_ID LOGIN_DATE APP_VERSION
--------------------------------
100033 2020-02-18 4.0
100033 2020-02-19 4.0
100033 2020-02-19 4.1
100056 2020-02-20 4.0
100056 2020-02-21 4.1
Результат, который я ищу, должен быть:
USER_ID PREVIOUS_APP_VERSION Current_APP_VERSION NUMBER_OF_DAYS
------------------------------------------------------------------
100033 4.0 4.1 0
100056 4.0 4.1 1