CREATE TABLE [stage].[stage_routine_medications_Test](
[patid] [varchar](20) NULL,
[dim_generic_with_repor_key] [int] NULL,
[dim_routine_meds_presc_key] [int] NOT NULL,
[Order_Start_Date] [date] NULL,
[Order_End_Date] [date] NULL,
[Total_Dose_First][numeric](15, 2) NULL,--First_Day_Dose_Count * Ordered_Dose
[First_Day_Dose_count] [int] NOT NULL,
[Ordered_Dose] [numeric](15, 2) NULL,
[Last_Day_Dose_Count] [int] NOT NULL,
[Total_Dose_Last][numeric](15, 2) NULL,---Last_Day_Dose_Count * Ordered_Dose
[Ordered_Dose_Unit] [varchar](50) NULL,
[Doses_per_day] [int] NULL,
[TOTAL_DOSE] [numeric](15, 2) NULL,---Doses_per_day*Ordered_Dose
[Order_Category_code] [varchar](50) NULL,
)
INPUT DATA:
|dim_generic_with_repor_key|patid|dim_routine_meds_presc_key|Order_Start_Date|Order_End_Date|Total_Dose_First|First_Day_Dose_count|Ordered_Dose|Last_Day_Dose_Count|Total_Dose_Last|Doses_per_day|TOTAL_DOSE|Ordered_Dose_Unit|
|25|103|11|'5/26/2016'|'6/28/2016'|125|5|25 |5|125|12|300 |'MG'|
|25|103|11|'5/26/2016'|'6/28/2016'|250|5|50 |5|250|12|600 |'mg'|
|25|103|11|'5/26/2016'|'6/28/2016'|500|5|100 |5|500|12|1200|'mg'|
|25|103|11|'6/28/2016'|'7/28/2016'|300|3|100 |2|200|4 |400 |'mg'|
|25|103|11|'7/28/2016'|'9/16/2016'|25 |2|12.5|2|25 |4 |50 |'MG'|
|25|103|11|'7/28/2016'|'9/16/2016'|50 |2|25 |2|50 |4 |100 |'mg'|
|25|103|11|'7/28/2016'|'9/16/2016'|100|2|50 |2|100|4 |200 |'mg'|
|25|103|11|'7/28/2016'|'9/16/2016'|200|2|100 |2|200|4 |400 |'mg'|
|25|103|11|'9/16/2016'|'9/17/2016'|150|6|25 |6|150|12|300 |'MG'|
|25|103|11|'9/17/2016'|'9/18/2016'|300|6|50 |6|300|12|600 |'mg'|
|25|103|11|'9/18/2016'|'9/19/2016'|600|6|100 |6|600|12|1200|'mg'|
|25|103|11|'9/19/2016'|'1/9/2017' |150|6|25 |7|175|12|300 |'MG'|
|25|103|11|'9/19/2016'|'1/9/2017' |300|6|50 |7|350|12|600 |'mg'|
|25|103|11|'9/19/2016'|'1/9/2017' |600|6|100 |7|700|12|1200|'mg'|
Tested Query:
select
patid,
dim_routine_meds_presc_key,
dim_generic_with_repor_key,
Order_Start_Date,
Order_End_Date,
LAG(Order_Start_Date,1) OVER (partition by [patid],dim_generic_with_repor_key ORDER BY Order_Start_Date, Order_End_Date) AS PreviousStartDate
, LAG(Order_End_Date,1) OVER (partition by [patid],dim_generic_with_repor_key ORDER BY Order_Start_Date, Order_End_Date) AS PreviousEndDate
,Total_Dose_First,
Total_Dose_Last,
LAG(Total_Dose_Last,1) OVER (partition by [patid],dim_generic_with_repor_key ORDER BY Order_Start_Date, Order_End_Date) AS PreviousLastDose,
TOTAL_DOSE
, sum(Total_Dose_First) over (partition by patid, dim_routine_meds_presc_key, dim_generic_with_repor_key, order_start_date, order_end_date) as Total_First
, sum(Total_Dose_Last) over (partition by patid, dim_routine_meds_presc_key, dim_generic_with_repor_key, order_start_date, order_end_date) as Total_Last
, sum(TOTAL_DOSE) over (partition by patid, dim_routine_meds_presc_key, dim_generic_with_repor_key, order_start_date, order_end_date) as Total_Dose
FROM [OSH_Repository].[stage].[stage_routine_medications_Test]
EXPECTED RESULT:
dim_routine_meds_presc_key Order_Start_Date Order_End_Date TOTAL_DOSE Total Dose Unit Discharge Medication indicator
11 5/26/2016 5/26/2016 875 MG
11 5/27/2016 6/27/2016 2100 MG
11 6/28/2016 6/28/2016 1175 MG
11 6/29/2016 7/27/2016 400 MG
11 7/28/2016 7/28/2016 575 MG
11 7/29/2016 9/15/2016 750 MG
11 9/16/2016 9/16/2016 525 MG
11 9/17/2016 9/17/2016 450 MG
11 9/18/2016 9/18/2016 900 MG
11 9/19/2016 9/19/2016 1650 MG
11 9/20/2016 1/8/2017 2100 MG
11 1/9/2017 1/9/2017 1225 MG