Имам данни, както е показано по-долу.
MSISDN DATE NET_TYPE
11111 01/01/2017 1
11111 02/01/2017 1
11111 03/01/2017 1
11111 04/01/2017 2
11111 05/01/2017 2
11111 06/01/2017 2
11111 07/01/2017 2
11111 08/01/2017 2
11111 09/01/2017 1
11111 10/01/2017 1
11111 11/01/2017 1
11111 12/01/2017 1
11111 13/01/2017 1
11111 14/01/2017 2
11111 15/01/2017 2
11111 16/01/2017 2
Търся решение, при което създавам нова променлива, която помага да се избира всяко първо и последно появяване на NET_TYPE за определен период от време (стойностите за дата не са фиксирани, NET_TYPE може да бъде 1 или 2 за дни, месеци или години). Решението, което гледам по-долу.
MSISDN DATE NET_TYPE INDICATOR
11111 01/01/2017 1 1
11111 02/01/2017 1 0
11111 03/01/2017 1 1
11111 04/01/2017 2 1
11111 05/01/2017 2 0
11111 06/01/2017 2 0
11111 07/01/2017 2 0
11111 08/01/2017 2 1
11111 09/01/2017 1 1
11111 10/01/2017 1 0
11111 11/01/2017 1 0
11111 12/01/2017 1 0
11111 13/01/2017 1 1
11111 14/01/2017 2 1
11111 15/01/2017 2 0
11111 16/01/2017 2 1
ако можете да предоставите решението, SAS е много полезно.
Код, който вече опитах, но не работи в SAS:
SELECT *,
CASE
WHEN net_type <> COALESCE(Lag(net_type, 1)
OVER (
partition BY sub_no
ORDER BY dt), 99) THEN dt
END AS starting,
CASE
WHEN net_type <> COALESCE(Lag(net_type, 1)
OVER (
partition BY sub_no
ORDER BY dt DESC), 99) THEN dt
END AS ending
FROM table
ORDER BY dt