Case

Note

case is currently experimental and may change behavior in the near future

PRQL uses case for both SQL’s CASE and IF statements. Here’s an example:

PRQL

1. from employees
2. derive distance = case [
3. city == "Calgary" => 0,
4. city == "Edmonton" => 300,
5. ]

SQL

1. SELECT
2. *,
3. CASE
4. WHEN city = 'Calgary' THEN 0
5. WHEN city = 'Edmonton' THEN 300
6. ELSE NULL
7. END AS distance
8. FROM
9. employees

If no condition is met, the value takes a null value. To set a default, use a true condition:

PRQL

1. from employees
2. derive distance = case [
3. city == "Calgary" => 0,
4. city == "Edmonton" => 300,
5. true => "Unknown",
6. ]

SQL

1. SELECT
2. *,
3. CASE
4. WHEN city = 'Calgary' THEN 0
5. WHEN city = 'Edmonton' THEN 300
6. ELSE 'Unknown'
7. END AS distance
8. FROM
9. employees