# QBCaseWhen

## Overview

The `QBCaseWhen` class is a utility for defining `WHEN` conditions within an SQL `CASE` expression in a `QBSelect` query. It specifies the conditions that, when met, determine the result of the `CASE` expression.

The `then` method assigns the value to return when the specified `WHEN` condition is satisfied. This enables the construction of dynamic and complex conditional logic directly within SQL queries.

For more information about constructing and executing queries, refer to the [QBSelect](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbselect) section of this documentation.

## Methods Summarized

| Type                                                                                   | Name                       | Summary                                                                                |
| -------------------------------------------------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------- |
| [QBCase](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcase) | [then(value)](#then-value) | Set the return value to use when the condition of the searched case expression is met. |

## Methods Detailed

### then(value)

Set the return value to use when the condition of the searched case expression is met.

**Parameters**

* [Object](https://docs.servoy.com/reference/servoycore/dev-api/js-lib/object) **value** The value.

**Returns:** [QBCase](https://docs.servoy.com/reference/servoycore/dev-api/database-manager/qbcase) the parent \`QBCase\` object with the associated condition and value applied.

**Sample**

```js
var query = datasources.db.example_data.order_details.createSelect();

// case expressions can be added to the result of the query
	query.result.add(query.case.when(query.columns.quantity.ge(1000)).then('BIG').else('small'));

 // they can also be used in conditions
	query.where.add(query.case
		.when(query.columns.discount.gt(10)).then(50)
		.when(query.columns.quantity.le(20)).then(70)
		.else(100)
	.multiply(query.columns.unitprice).lt(10000));
```

***
