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"), "" ) )
Hi villa1980 - I have modify your formula to incorporate the additional Duration conditions for each bay:
please find the below:
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('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"),
""
)
Check the and let me know.
Hi, THank-you for that, it has worked very well, something very simple like adding brackets 🙂
I have another issue now, at the end of DAX I return a "" if none of the conditions are met. "" look messy in my table, so my thought is saying the MAX Date for the BAY +1...
eg BAY 1 is blank MAX DATE is 18th Nov 24, so would like to say 19th Nov 24
Bay 4 is blank MAX DATE is 29th Nov 24, so would like to say 30th Nov 24