Quantcast
Channel: Questions in topic: "calendar"
Viewing all articles
Browse latest Browse all 26

How do I create a row for each hour between a time range

$
0
0
I need to create a census table where I have a row for each hour between start and end times. I created a temporary table to get the start and end time and then a cte with a union to get each hour between those times. but I get separate queries as the result. please help below is my script: USE CLARITY GO /******* GET THE LIST OF ACCOUNTS WITH ADMIT AND DISCHARGE TIME**************/ DECLARE @i INT; DECLARE @NUMROWS AS INT; DECLARE @ACCOUNTLST AS TABLE ( IDX INT PRIMARY KEY IDENTITY(1,1) ,HSP_ACCOUNT_ID INT ,HSP_ADMSN_TIME DATETIME ,HSP_DISCHRG_TIME DATETIME ); INSERT @ACCOUNTLST SELECT HSP_ACCOUNT_ID ,HOSP_ADMSN_TIME ,HOSP_DISCHRG_TIME FROM PAT_ENC WHERE HOSP_ADMSN_TIME IS NOT NULL AND HSP_ACCOUNT_ID IS NOT NULL AND HOSP_DISCHRG_TIME IS NOT NULL --SELECT * --FROM @ACCOUNTLST SET @i =1 SET @NUMROWS =( SELECT COUNT(*) FROM @ACCOUNTLST ) IF @NUMROWS> 0 WHILE (@i <= ( SELECT MAX(IDX) FROM @ACCOUNTLST ) ) BEGIN ;WITH CTE AS ( SELECT HSP_ACCOUNT_ID ,HSP_ADMSN_TIME 'CENSUSTIME' ,HSP_DISCHRG_TIME 'ENDTIME' FROM @ACCOUNTLST WHERE IDX=@i UNION ALL --HSP_ACCOUNT_ID SELECT HSP_ACCOUNT_ID ,DATEADD(HH,1,CENSUSTIME) ,ENDTIME FROM CTE WHERE CENSUSTIME <=ENDTIME ) SELECT * FROM CTE OPTION (MAXRECURSION 0) SET @i=@i+1 END

Viewing all articles
Browse latest Browse all 26

Trending Articles