I need to concatenate rows using different separator based on arbitrary logic. For instance:
CREATE TABLE t(i INT, c VARCHAR(10));
INSERT INTO t(i,c) VALUES(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd'),(5, 'e');
SELECT STRING_AGG(c,(CASE WHEN i%2=0 THEN ' OR ' ELSE ' AND ' END))
WITHIN GROUP (ORDER BY i) AS r
FROM t;
And it ends with error:
Separator parameter for STRING_AGG must be a string literal or variable.
My end goal is to get: a OR b AND c OR d AND e
like in: db<>fiddle demo
Notes: I am aware of XML + STUFF
or @var = @var + ...
.
I am searching for "workarounds" specific to STRING_AGG
.
EDIT: I've added it as sugestion on Azure Feedback