问题描述
这是我的要求
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 server 上的 sql 中运行良好,但相同的查询在 Synapse 中不起作用
解决方法
Azure Synapse Analytics 不支持 FOR XML
,但支持 STRING_SPLIT
和 STRING_AGG
作为表函数。您的查询需要 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,'usc@yahoo.com'
UNION ALL
SELECT 3,'Mahesh','msc@zyx.com';
SELECT someName,STRING_AGG( someEmail,',' ) result
FROM #tmp
GROUP BY someName
我的结果: