Рассчитать предыдущий логин для каждой строки, сгруппированной по дням относительно текущей строки

Если я понимаю вас правильно, вот что вы хотите.

SET @start_res = 20150301;
SET @finish_res= 20150501;
SET @finish_check= 20150801;
SET @start_check= 20150301;
SET @daily_hos= 3;

SELECT 

(SELECT COUNT(DAY_IN) FROM t_hospital WHERE 
DAY_IN between  @start_check and @finish_check and 
RES_DATE between @start_res and @finish_res and 
ID_daily_hos =@daily_hos) AS 'arr' ,

(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE 
PAT_STATUS  like '%ong%' and  
DAY_IN between @start_check and @finish_check and 
RES_DATE between @start_res and @finish_res  and 
ID_daily_hos =@daily_hos) AS 'ONG1' ,

(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE 
PAT_STATUS  like '%rtde%' and  
DAY_IN between  @start_check and @finish_check and 
RES_DATE between @start_res and @finish_res  and 
ID_daily_hos =@daily_hos) AS 'RTED' ,

(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE 
PAT_STATUS  like '%pol%' and 
DAY_IN between @start_check and @finish_check and 
RES_DATE between @start_res and @finish_res  and 
ID_daily_hos =@daily_hos) AS 'POLI' ,

(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE 
PAT_STATUS  like '%para%' and  
DAY_IN between @start_check and @finish_check and 
RES_DATE between @start_res and @finish_res  and 
ID_daily_hos =@daily_hos) AS 'para'
1
задан Roger Steinberg 15 January 2019 в 22:57
поделиться

1 ответ

Из того, что я могу сказать, логика - это количество дней от данной даты входа в систему до следующей, предположительно с самой последней датой, измеренной до текущей даты.

Это предполагает такой запрос:

SELECT id, CONVERT(date, login) as dte,
    DATEDIFF(day, login, LEAD(MAX(login), 1, GETDATE()) OVER (PARTITION BY id)) as DAYS_LAST_LOGIN
FROM database.table 
WHERE login > DATEADD(month, -3, getdate())
GROUP BY id, CONVERT(date, login)
ORDER BY id, CONVERT(date, login) DESC;

Я удалил части даты, потому что я не нахожу их полезными, но вы, конечно, можете включить их.

0
ответ дан Gordon Linoff 15 January 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: