Case statement in SQL
In Salesforce Marketing Cloud (SFMC), we can use the CASE statement in SQL (Query Activities in Automation Studio) to apply conditional logic—similar to IF-ELSE.
🔹 Basic Syntax
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END
Source DETarget DE1. Age Group SegmentationQuery -SELECT FirstName,CASEWHEN Age < 18 THEN 'Minor'WHEN Age BETWEEN 18 AND 40 THEN 'Adult'ELSE 'Senior'END AS AgeGroupFROM Customer_master_AbuQuery in SQL :-Target DE after query :-2. Engagement LevelQuery in SQL-SELECT FirstName,CASEWHEN OpenCount > 10 THEN 'High'WHEN OpenCount BETWEEN 5 AND 10 THEN 'Medium'ELSE 'Low'END AS EngagementFrom Customer_master_AbuQuery :-Target DE after query run :-3. GreetingQuery -SELECT FirstName,CASEWHEN Country = 'India' THEN 'Namaste'WHEN Country = 'USA' THEN 'Hello'ELSE 'Hi'END AS GreetingFROM Customer_master_abuQuery in SQL :-Target DE after query4. Status MappingQuery -SELECT FirstName,CASEWHEN Status = 'A' THEN 'Active'WHEN Status = 'I' THEN 'Inactive'ELSE 'Unknown'END AS StatusLabelFROM Customer_master-abuQueryTarget DE after query5. Purchase SegmentationQuerySELECT FirstName,CASEWHEN PurchaseAmount > 2000 THEN 'Premium'WHEN PurchaseAmount BETWEEN 500 AND 2000 THEN 'Standard'ELSE 'Low Value'END AS CustomerTypeFROM Customer_master_AbuQuery in SQLTarget DE after query6. Re-engagementQuerySELECT FirstName,CASEWHEN OpenCount = 0 THEN 'Re-engage'ELSE 'Active User'END AS CampaignTypeFROM Customer_master_AbuQuery in SQLTarget DE after query7. Youth CampaignQuerySELECT FirstName,CASEWHEN Age < 25 THEN 'Youth Campaign'ELSE 'General Campaign'END AS CampaignFROM Customer_master_AbuQuery in SQLTarget DE after query8. VIP SegmentQuerySELECT FirstName,CASEWHEN PurchaseAmount > 1000 AND OpenCount > 10 THEN 'VIP'ELSE 'Normal'END AS SegmentFROM Customer_master_AbuQuery in SQLTarget DE after query9. Email StrategyQuerySELECT FirstName,CASEWHEN OpenCount > 10 THEN 'Daily Emails'WHEN OpenCount BETWEEN 5 AND 10 THEN 'Weekly Emails'ELSE 'Monthly Emails'END AS EmailStrategyFROM Customer_master_Abu
Query in SQLTarget DE after query10. Risk IdentificationQuerySELECT FirstName,CASEWHEN OpenCount < 3 AND PurchaseAmount < 500 THEN 'At Risk'ELSE 'Safe'END AS RiskLevelFROM Customer_master_AbuQuery in SQLTarget DE after query👉 SQL CASE - Important Notes (Advanced Trainer Guide)
1. Use Searched CASEUse CASE WHEN condition instead of simple CASE.Supports complex business logic, such as engagement and purchase segmentation.Used in real marketing decision-making.2. Always Use ELSEWithout ELSE, SQL returns NULL.NULL values can break journeys and reports.Always define the default output.3. Avoid CASE in WHERECASE in WHERE slows down queries.SFMC processes rows row by row, so performance degrades.Use direct filters instead.4. Maintain Data Type ConsistencyAll THEN and ELSE outputs must be the same data type.Mixing text and numbers causes errors.Ensure uniform return values.5. CASE for SegmentationUsed to divide users into groups.Example: High, Medium, Low engagement.Core logic for marketing campaigns.6. Combine with AggregationUse CASE with SUM/COUNT for conditional counting.Useful in reporting and dashboards.Example: count engaged users.7. Keep Logic SimpleAvoid deeply nested CASE statements.Split logic into multiple columns if needed.Improves readability and maintenance.8. Use Meaningful AliasesUse clear column names like EngagementLevel.Helps marketing and analytics teams understand output.Improves professionalism.9. Test Before ProductionAlways validate logic on a small dataset.Avoid wrong campaign targeting.Prevents costly mistakes.10. Optimize PerformanceCASE runs row-by-row.Keep conditions minimal and efficient.Avoid unnecessary complexity
Comments
Post a Comment