Forum Discussion
villa1980
1 year agoResolver II
Switch Calculation with Multiple conditions
Hi All, I have the below DAX formula which highlights the date based on the duration. This works well but what I need to do now is to add a few conditions to this... Next 60 min Block Date = SWITC...
- 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"), "" ) )
villa1980
1 year agoResolver II
Hi, thank-you for the reply, it does work however, it gives me 01 January 2025 for all Bays, I just need the max date for each group.
Bibiano_Geraldo
1 year agoSuper User
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"),
""
)
)