Hi,
I used the below table struture, data and query to concatenate distinct values of Status for an Order.
DROP TABLE <SCHEMA_NAME>.CONCAT_COLUMN ;
CREATE COLUMN TABLE <SCHEMA_NAME>.CONCAT_COLUMN
(ORDER_ID INTEGER,STATUS VARCHAR(1));
INSERT INTO <SCHEMA_NAME>.CONCAT_COLUMN
SELECT 1,'A' FROM DUMMY
UNION ALL SELECT 1,'B' FROM DUMMY
UNION ALL SELECT 1,'C' FROM DUMMY
UNION ALL SELECT 1,'C' FROM DUMMY
UNION ALL SELECT 2,'D' FROM DUMMY
UNION ALL SELECT 2,'E' FROM DUMMY
UNION ALL SELECT 3,'F' FROM DUMMY
UNION ALL SELECT 1,'A' FROM DUMMY
UNION ALL SELECT 1,'B' FROM DUMMY
UNION ALL SELECT 1,'C' FROM DUMMY
UNION ALL SELECT 1,'C' FROM DUMMY
UNION ALL SELECT 2,'D' FROM DUMMY
UNION ALL SELECT 2,'E' FROM DUMMY
UNION ALL SELECT 3,'F' FROM DUMMY;
SELECT * FROM <SCHEMA_NAME>.CONCAT_COLUMN;
Below query provides the required result:
SELECT ORDER_ID,STRING_AGG(STATUS,',') AS ORDER_STATUS
FROM
(SELECT DISTINCT ORDER_ID,STATUS FROM <SCHEMA_NAME>.CONCAT_COLUMN)
GROUP BY ORDER_ID;
Query Result:
ORDER_ID;ORDER_STATUS
1;A,B,C
2;D,E
3;F
Regards,
Sunny