我的任务是将一些 Oracle SQL 迁移到 Microsofts Analytics Platform System 。
原始的Oracle代码基本上如下:
SELECT MyID,TO_CHAR(LISTAGG(ListValue)) MyValue
FROM MyTable
GROUP BY MyID
STRING_AGG
甚至在最新版本中也不被支持,并且没有任何一种通常的方法可以实现这一目的。
有什么想法吗?
答案 0 :(得分:1)
如果您使用的是更高版本,则可以使用STRING_AGG():
SELECT MyID, STRING_AGG(ListValue, ',') AS MyValue
FROM MyTable
GROUP BY MyID;
但是,使用较旧的xml方法也可以实现同样的效果,并且对低版本的SQL有所帮助。
SELECT MyID, STUFF ( (SELECT ', ' +CAST(t1.ListValue AS VARCHAR(255)) -- Neglate conversion if unnecessary
FROM MyTable t1
WHERE t1.MyID = t.MyID
FOR XML PATH('')
), 1, 1, ''
) AS MyValue
FROM MyTable t
GROUP BY MyID;