Мой запрос возвращает странные результаты для переменной, полученной из дат (lngth_srvc). Я думаю, что-то трактуется как символы, и вывод, который я получаю, - это разница между представлениями символов.
WITH core AS
(SELECT t.*
FROM mhaods.stushh t
WHERE stus_cd IN ( 'DWRT', 'FINL', 'DWFL', 'DWR',
'DWSR', 'DWPC' )
AND stdt BETWEEN '2017-02-28' AND '2019-02-28'
UNION
SELECT g.*
FROM mhaods.stusha g
WHERE stus_cd IN ( 'DWRT', 'FINL', 'DWFL', 'DWR',
'DWSR', 'DWPC' )
AND stdt BETWEEN '2017-02-28' AND '2019-02-28'),
core1a AS
(SELECT p.*,
ROW_NUMBER()
OVER(
PARTITION BY asgnd_to_pin
ORDER BY stdt asc) AS RANK
FROM core p),
core1 AS
(SELECT asgnd_to_pin,
stus_cd,
stdt,
RANK,
( ( '2019-02-28' - stdt ) / 365 ) AS lngth_srvc_yrs,
(( '2019-02-28' - stdt )) AS lngth_srvc_days
FROM core1a
WHERE RANK = 1
AND asgnd_to_pin IN ( '788387' )
ORDER BY stdt)
SELECT asgnd_to_pin,
stdt,
lngth_srvc_yrs,
lngth_srvc_days
FROM core1
ORDER BY lngth_srvc_yrs
FETCH first 20 ROWS only;
Пример вывода следующий. Он имеет более 30 лет с 03.03.2017 по 28.02.2009 и 11125 дней.
ASGND_TO_PIN STDT LNGTH_SRVC_YRS LNGTH_SRVC_DAYS
788387 3/3/2017 30.4794520 11125
259399 3/2/2017 30.4821917 11126
155851 3/2/2017 30.4821917 11126
304527 3/2/2017 30.4821917 11126
881853 3/1/2017 30.4849315 11127
144362 3/1/2017 30.4849315 11127
271562 2/28/2017 54.7945205 20000
618426 2/28/2017 54.7945205 20000
Я также попробовал код с
((DATE('2019-02-28')-DATE(stdt))) as lngth_srvc_days
и все еще получил плохие результаты