Forum Discussion
Switch Calculation with Multiple conditions
- 1 year ago
Hi,
To get the maximum date for each group, you can use the MAX function within a CALCULATE statement to ensure you get the maximum date for each Bay_Code_No group. Here’s an updated version of your DAX formula:
Next 60 min Block Date = SWITCH( TRUE(), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 1" && ('EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -120), FORMAT( CALCULATE( MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 1", 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] IN {-60, -120} ), "DD Mmmm YYYY" ), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 2" && ('EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -120 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -180), FORMAT( CALCULATE( MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 2", 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] IN {-60, -120, -180} ), "DD Mmmm YYYY" ), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 3" && 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60, FORMAT( CALCULATE( MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 3", 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 ), "DD Mmmm YYYY" ), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 4" && 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60, FORMAT( CALCULATE( MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 4", 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 ), "DD Mmmm YYYY" ), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 5" && 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60, FORMAT( CALCULATE( MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 5", 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 ), "DD Mmmm YYYY" ), IF( ISBLANK('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]), FORMAT(MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]) + 1, "DD Mmmm YYYY"), "" ) )
Hello villa1980 ,
Try below dax for this :
Next 60 min Block Date =
VAR MaxDate =
CALCULATE(
MAX('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE]),
FILTER(
'EXTR_STG_FOCUS APPOINTMENTS',
'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = 'EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No]
)
)
RETURN
SWITCH(
TRUE(),
('EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 1" &&
('EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -120)),
FORMAT('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE],"DD Mmmm YYYY"),
('EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 2" &&
('EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -120 || 'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -180)),
FORMAT('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE],"DD Mmmm YYYY"),
('EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 3" &&
'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60),
FORMAT('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE],"DD Mmmm YYYY"),
('EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 4" &&
'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60),
FORMAT('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE],"DD Mmmm YYYY"),
('EXTR_STG_FOCUS APPOINTMENTS'[Bay_Code_No] = "BAY 5" &&
'EXTR_STG_FOCUS APPOINTMENTS'[Duration] = -60),
FORMAT('EXTR_STG_FOCUS APPOINTMENTS'[STARTDATE],"DD Mmmm YYYY"),
FORMAT(MaxDate + 1, "DD Mmmm YYYY")
)
I hope this helps.
Did I answer your question ? Mark this as solution or give a thumbs up if this helps.
Cheers
Hello, thank-you for the reply, however, it is stating a circular dependancy