Nested Case Statement

I'm trying to count travel records that are completed and then put them into tiers. ·
0-34 Tier 1
35-70 Tier 2
71-110 Tier 3
111+ Tier 4
I keep getting an error using the beast mode below
CASE WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 35 THEN 'TIER 2'
WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 71 OR > 110 THEN 'TIER 3'
WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c` END) > 111 THEN 'TIER 4'
ELSE 'TIER 1'
END)
Best Answer
-
You need to reverse the order of your SUM checks because if the sum is more than 111 it's already more than 35 so it will return Tier 2 first and quit as it executes the first case that matches. Check for Tier 4 then 3 then 2 then 1.
Also with your tier 3 check you only need to check for 71 because by logic all prior when statements are false.
CASE WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c` END) > 111 THEN 'TIER 4' WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 71 THEN 'TIER 3' WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 35 THEN 'TIER 2' ELSE 'TIER 1' END)
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**2
Answers
-
You need to reverse the order of your SUM checks because if the sum is more than 111 it's already more than 35 so it will return Tier 2 first and quit as it executes the first case that matches. Check for Tier 4 then 3 then 2 then 1.
Also with your tier 3 check you only need to check for 71 because by logic all prior when statements are false.
CASE WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c` END) > 111 THEN 'TIER 4' WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 71 THEN 'TIER 3' WHEN SUM(CASE WHEN `Status__c` = 'Booked' THEN 'Completed' ELSE `Status__c`END) > 35 THEN 'TIER 2' ELSE 'TIER 1' END)
**Was this post helpful? Click Agree or Like below**
**Did this solve your problem? Accept it as a solution!**2 -
@GrantSmith Thank you for your help!!
0 -
Looks like I have to create this change in the Dataflow because
SELECT
a.*
,COUNT(DISTINCT(case WHEN a."Status__c"='Booked' and (a."Status__c" = 'Booked' > 111 THEN 'TIER 4'))
FROM
"sfdc_travel_raw" a
I am getting an error
0
Categories
- All Categories
- 1.9K Product Ideas
- 1.9K Ideas Exchange
- 1.6K Connect
- 1.3K Connectors
- 310 Workbench
- 6 Cloud Amplifier
- 9 Federated
- 3K Transform
- 112 SQL DataFlows
- 650 Datasets
- 2.2K Magic ETL
- 4K Visualize
- 2.5K Charting
- 790 Beast Mode
- 78 App Studio
- 43 Variables
- 751 Automate
- 187 Apps
- 477 APIs & Domo Developer
- 71 Workflows
- 16 DomoAI
- 40 Predict
- 17 Jupyter Workspaces
- 23 R & Python Tiles
- 407 Distribute
- 118 Domo Everywhere
- 279 Scheduled Reports
- 10 Software Integrations
- 139 Manage
- 136 Governance & Security
- 8 Domo Community Gallery
- 47 Product Releases
- 12 Domo University
- 5.4K Community Forums
- 41 Getting Started
- 31 Community Member Introductions
- 113 Community Announcements
- 4.8K Archive