Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
ptmuldoon
Resolver I
Resolver I

Using Switch with Multiple Conditions

I'm having some trouble writing a measure that that will check for multiple conditions in a switch statement.

I've put the below together, but it gives me the error of " A single value for column 'Value' in table 'MyValues' cannot be determined. "  And in searching that, I did try and test for a HASONEVALUE.

Can anyone point where I am wrong in the below?  I do plan to add additional conditions to it such as "% of X" && "Month",, etc once I can get the below working?

 

=IF ( HASONEVALUE(MyValues[Value]) && HASONEVALUE(MyValues[Period]),
	SWITCH(TRUE(),
	MyValues[Value] = "DOLLARS" && MyValues[Period] = "Month", [Amt],
	MyValues[Value] = "DOLLARS" && MyValues[Period] = "Last 3", [Last 3 Amt],
	MyValues[Value] = "DOLLARS" && MyValues[Period] = "Last 6", [Last 6 Amt],
	MyValues[Value] = "DOLLARS" && MyValues[Period] = "Last 9", [Last 9 Amt],
	MyValues[Value] = "DOLLARS" && MyValues[Period] = "Last 12", [Last 12 Amt]
	),
	BLANK()
)

Thanks,

PT 

1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@ptmuldoon , Try a measure like

 

IF ( HASONEVALUE(MyValues[Value]) && HASONEVALUE(MyValues[Period]),
SWITCH(TRUE(),
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Month", [Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 3", [Last 3 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 6", [Last 6 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 9", [Last 9 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 12", [Last 12 Amt]
),
BLANK()
)

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

View solution in original post

1 REPLY 1
amitchandak
Super User
Super User

@ptmuldoon , Try a measure like

 

IF ( HASONEVALUE(MyValues[Value]) && HASONEVALUE(MyValues[Period]),
SWITCH(TRUE(),
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Month", [Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 3", [Last 3 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 6", [Last 6 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 9", [Last 9 Amt],
max(MyValues[Value]) = "DOLLARS" && max(MyValues[Period]) = "Last 12", [Last 12 Amt]
),
BLANK()
)

Share with Power BI Enthusiasts: Full Power BI Video (20 Hours) YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.