---
title: "How to use WHEN CASE queires in AWS Athena"
description: "Using conditions in AWS Athena queries"
author: "Bartosz Mikulski"
author_bio: "Principal AI Engineer & MLOps Architect. I bridge the gap between \"it works in a notebook\" and \"it works for 200 million users.\""
author_url: https://mikulskibartosz.name
author_linkedin: https://www.linkedin.com/in/mikulskibartosz/
author_github: https://github.com/mikulskibartosz
canonical_url: https://mikulskibartosz.name/when-case-in-aws-athena
---

In AWS Athena, we can use the WHEN CASE expressions to build "switch" conditions that convert matching values into another value. Such a WHEN CASE expression consists of four parts:

* `CASE expression` that produces the value that will be matched in the expression
* `WHEN value THEN result` that checks whether the `expression` matches the `value` and returns the `result` if both are the same
* `ELSE default_result` that returns the default value in the case of no matching found using the WHEN expressions. Note that if there is no `ELSE default_result`, the expression returns `null` as the default value.
* 'END' that finishes the `CASE WHEN` block

We can use multiple `WHEN` expressions to build long "switch" statements, like this:

```sql
SELECT CASE column_to_be_matched
WHEN 'value_A' THEN 'the_replacement_of_value_A'
WHEN 'value_B' THEN 'the_replacement_of_value_B'
WHEN 'value_C' THEN 'the_replacement_of_value_C'
ELSE 'default'
END
FROM some_table
```

We can also use the CASE WHEN expressions to retrieve values from multiple columns and choose the correct one using the `CASE WHEN` statement:

```sql
SELECT client_id, CASE client_type
WHEN 'private' THEN last_name
WHEN 'company' THEN company_name
END from some_clients
```

