# Use multiple fields in a calculation

To use values from multiple fields in a mathematic calculation, complete the following steps:

## Filter by fields

Use `filter()` to return only the fields necessary for your calculation. Use the `or` logical operator to filter by multiple fields.

The following example queries two fields, `A` and `B`:

``````from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._field == "A" or r._field == "B")
``````

This query returns one or more tables for each field. For example:

_time_field_value
2021-01-01T00:00:00ZA12.4
2021-01-01T00:00:15ZA12.2
2021-01-01T00:00:30ZA11.6
2021-01-01T00:00:45ZA11.9
_time_field_value
2021-01-01T00:00:00ZB3.1
2021-01-01T00:00:15ZB4.8
2021-01-01T00:00:30ZB2.2
2021-01-01T00:00:45ZB3.3

## Pivot fields into columns

Use `pivot()` to align multiple fields by time.

To correctly pivot on `_time`, points for each field must have identical timestamps. If timestamps are irregular or do not align perfectly, see Normalize irregular timestamps.

``````// ...
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
``````

Using the queried data above, this `pivot()` function returns:

_timeAB
2021-01-01T00:00:00Z12.43.1
2021-01-01T00:00:15Z12.24.8
2021-01-01T00:00:30Z11.62.2
2021-01-01T00:00:45Z11.93.3

## Perform the calculation

Use `map()` to perform the mathematic operation using column values as operands.

The following example uses values in the `A` and `B` columns to calculate a new `_value` column:

``````// ...
|> map(fn: (r) => ({ r with _value: r.A * r.B }))
``````

Using the pivoted data above, this `map()` function returns:

_timeAB_value
2021-01-01T00:00:00Z12.43.138.44
2021-01-01T00:00:15Z12.24.858.56
2021-01-01T00:00:30Z11.62.225.52
2021-01-01T00:00:45Z11.93.339.27

## Full example query

``````from(bucket: "example-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._field == "A" or r._field == "B")
|> pivot(rowKey: ["_time"], columnKey: ["_field"], valueColumn: "_value")
|> map(fn: (r) => ({r with _value: r.A * r.B}))
``````