Select azure synapse 中的列值作为逗号分隔的字符串 sql 服务器

Select Column Values as Comma Separated String in azure synapse sql server

这是我的要求

Data

1 Umesh usc@gmail.com
2 Umesh usc@yahoo.com
3 Mahesh msc@zyx.com

Out put
1 Umesh usc@gmail.com,usc@yahoo.com
2 Mahesh msc@zyx.com

FOR XML 在 prim sql 服务器上的 SQL 中工作正常,但相同的查询在 Synapse

中不起作用

Azure Synapse Analytics 不支持 FOR XML,但支持 STRING_SPLITSTRING_AGG 作为 table 函数。您的查询需要 STRING_AGG。一个简单的例子,在专用 SQL 池上测试:

IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp;

CREATE TABLE #tmp (
    rowId           INT  PRIMARY KEY NONCLUSTERED NOT ENFORCED,
    someName        VARCHAR(50),
    someEmail       VARCHAR(50)
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    HEAP
);

INSERT INTO #tmp ( rowId, someName, someEmail )
SELECT 1, 'Umesh', 'usc@gmail.com'
UNION ALL
SELECT 2, 'Umesh', 'usc@yahoo.com'
UNION ALL
SELECT 3, 'Mahesh', 'msc@zyx.com';


SELECT someName, STRING_AGG( someEmail, ',' ) result
FROM #tmp
GROUP BY someName

我的结果: