## 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 ```