[ https://issues.apache.org/jira/browse/FLINK-37267?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gustavo de Morais updated FLINK-37267: -------------------------------------- Description: The SQL standard specifies a WITH ORDINALITY clause that can be appended to any UNNEST function call, which returns a new row for each element and its position in the data structure being unnested. Examples: ```sql – Returns a new row for each element in a constant array and its position in the array SELECT * FROM (VALUES('order_1')) CROSS JOIN UNNEST(ARRAY["shirt", "pants", "hat"]) WITH ORDINALITY AS t(product_name, index) id product_name index ======= ============ ===== order_1 shirt 1 order_1. pants 2 order_1. hat 3 – Returns a new row for each element and its position in the array assuming a Orders table with an array column `product_names` SELECT order_id, product_name, product_index FROM Orders CROSS JOIN UNNEST(product_names) WITH ORDINALITY AS t(product_name, product_index) ``` A unnest with ordinality will return each element and the position of the element in the data structure, 1-indexed. The order of the elements for arrays and multisets is guaranteed. Since maps are unordered, the order of the elements is not guaranteed. was: The SQL standard specifies a WITH ORDINALITY clause that can be appended to any UNNEST function call, which returns a new row for each element and its position in the data structure being unnested. Examples: ```sql -- Returns a new row for each element in a constant array and its position in the array SELECT * FROM (VALUES('order_1')) CROSS JOIN UNNEST(ARRAY["shirt", "pants", "hat"]) WITH ORDINALITY AS t(product_name, index) id product_name index ======= ============ ===== order_1 shirt 1 order_1 pants 2 order_1 hat 3 -- Returns a new row for each element and its position in the array assuming a Orders table with an array column `product_names` SELECT order_id, product_name, product_index FROM Orders CROSS JOIN UNNEST(product_names) WITH ORDINALITY AS t(product_name, product_index) ``` A unnest with ordinality will return each element and the position of the element in the data structure, 1-indexed. The order of the elements for arrays and multisets is guaranteed. Since maps are unordered, the order of the elements is not guaranteed. > Support WITH ORDINALITY for UNNEST > ---------------------------------- > > Key: FLINK-37267 > URL: https://issues.apache.org/jira/browse/FLINK-37267 > Project: Flink > Issue Type: New Feature > Components: Table SQL / API > Reporter: Gustavo de Morais > Priority: Major > Labels: pull-request-available > > The SQL standard specifies a WITH ORDINALITY clause that can be appended to > any UNNEST function call, which returns a new row for each element and its > position in the data structure being unnested. > Examples: > ```sql > – Returns a new row for each element in a constant array and its position in > the array > SELECT * > FROM (VALUES('order_1')) > CROSS JOIN UNNEST(ARRAY["shirt", "pants", "hat"]) > WITH ORDINALITY AS t(product_name, index) > id product_name index > ======= ============ ===== > order_1 shirt 1 > order_1. pants 2 > order_1. hat 3 > – Returns a new row for each element and its position in the array assuming a > Orders table with an array column `product_names` > SELECT order_id, product_name, product_index > FROM Orders > CROSS JOIN UNNEST(product_names) > WITH ORDINALITY AS t(product_name, product_index) > ``` > A unnest with ordinality will return each element and the position of the > element in the data structure, 1-indexed. The order of the elements for > arrays and multisets is guaranteed. Since maps are unordered, the order of > the elements is not guaranteed. -- This message was sent by Atlassian Jira (v8.20.10#820010)