## Syntax
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart LR
lastAggregateFunction_start((START))
lastAggregateFunction_start --> lastAggregateFunction_0_0[LAST]:::quoted
lastAggregateFunction_0_0 --> lastAggregateFunction_0_1["("]:::quoted
lastAggregateFunction_0_1 --> lastAggregateFunction_0_2[<a href="Invantive UniversalSQL/Grammar/Expression" class="internal-link">expression</a>]
lastAggregateFunction_0_2 --> lastAggregateFunction_0_3[")"]:::quoted
lastAggregateFunction_0_3 --> lastAggregateFunction_end((END))
```
## Purpose
Group function to the last non-`null` value in an ordered result set. The order of the rows is determined by the source; combine with an `order by` in a nested query for a deterministic outcome.
## Examples
The following example retrieves the last contact person from a contact list, in the order in which the contacts are stored:
```sql
select last(cnt.contact_name)
from csvtable
( passing 'Acme Industries#Alice Johnson#CFO|Acme Industries#Tom Peters#Accounts Payable|Bergmann GmbH#Erika Weber#Controller|Carlson Ltd#James Smith#CFO|Dubois SA#Marie Dupont#Accounts Payable'
row delimiter '|'
column delimiter '#'
columns customer_name varchar2 position next
, contact_name varchar2 position next
, role varchar2 position next
) cnt
-------------------
Marie Dupont
```
The following example retrieves per customer the alphabetically last contact person:
```sql
select srt.customer_name
, last(srt.contact_name)
from ( select cnt.customer_name
, cnt.contact_name
from csvtable
( passing 'Acme Industries#Alice Johnson#CFO|Acme Industries#Tom Peters#Accounts Payable|Bergmann GmbH#Erika Weber#Controller|Carlson Ltd#James Smith#CFO|Dubois SA#Marie Dupont#Accounts Payable'
row delimiter '|'
column delimiter '#'
columns customer_name varchar2 position next
, contact_name varchar2 position next
, role varchar2 position next
) cnt
order
by cnt.customer_name
, cnt.contact_name
) srt
group
by srt.customer_name
order
by srt.customer_name
-------------------
Acme Industries Tom Peters
Bergmann GmbH Erika Weber
Carlson Ltd James Smith
Dubois SA Marie Dupont
```