GROUP_CONCAT
Purpose
This function returns a concatenated string of values of expr from all rows in the window or group.
Syntax
group_concat::=
Usage Notes
- With DISTINCT, the function considers duplicate values of expr only once.
- The order_clause as function argument specifies the sorting order of the rows within the window or group.
- The SEPARATOR value can be any string constant. Concatenated string constants are also valid. By default the value for SEPARATOR is a single comma ','.
- The order_clause in the over_clause is also optional.
- It is only possible to specify the order_clause once, either in the function arguments or as part of the over_clause. For more information, refer to Analytic Functions section.
- An overflow occurs if the result string is longer than the maximum length supported by type VARCHAR (2 million characters). If such an overflow occurs, Exasol raises an error.
Examples
Aggregate Function
SELECT
department,
GROUP_CONCAT(id ORDER BY hire_date SEPARATOR ', ') GROUP_CONCAT_RESULT
FROM employee_table GROUP BY department;
Result
DEPARTMENT | GROUP_CONCAT_RESULT |
ACCOUNTS | 2005, 2003, 2002, 2004, 2001 |
HR | 1003, 1002, 1004, 1001 |
Analytic Function
SELECT
id, department, hire_date,
GROUP_CONCAT(id ORDER BY hire_date SEPARATOR ',') OVER (PARTITION BY department rows between 1 preceding and 1 following) GROUP_CONCAT_RESULT
from employee_table ORDER BY department, hire_date;
Result
ID | DEPARTMENT | HIRE_DATE | GROUP_CONCAT_RESULT |
2005 | ACCOUNTS | 2013-01-01 | 2005,2003 |
2003 | ACCOUNTS | 2015-07-01 | 2005,2003,2002 |
2002 | ACCOUNTS | 2017-01-01 | 2003,2002,2004 |
2004 | ACCOUNTS | 2017-01-01 | 2002,2004,2001 |
2001 | ACCOUNTS | 2018-07-01 | 2004,2001 |
1003 | HR | 2014-01-01 | 1003,1002 |
1002 | HR | 2016-01-01 | 1003,1002,1004 |
1004 | HR | 2016-01-01 | 1002,1004,1001 |
1001 | HR | 2018-01-01 | 1004,1001 |