是否有Tom Kyte支持SQL Server的STRAGG功能的实现?

sra*_*raj 4 database sql-server

STRAGG函数实现将结果作为单个列值返回.Oracle的实现似乎非常通用,可以用于不同的表(和关系).可以为SQL Server实现类似的行为.在Web上进行搜索似乎只返回硬编码实现而不是通用实现.我们有任何已知的Sql服务器解决方案吗?

Ste*_*ass 6

有一个很好的XML解决方案,它被广泛使用.如果你聚合的字符串没有XML无效或XML特殊的字符串,这是最简单的,这是一个例子.

SELECT *
FROM
(
   SELECT x AS [data()]
   FROM
      (
         SELECT 'something'
         UNION ALL
         SELECT 'something else'
         UNION ALL
         SELECT 'something & something'
      ) y (x)
   FOR XML PATH('')
) z (final)
Run Code Online (Sandbox Code Playgroud)

这个例子来自Tony Rogerson的帖子http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/07/06/871.aspx

你可以做的远不止这个简单的例子所示.您可以指定聚合中项目的顺序(在派生表中放置ORDER BY),您可以对其进行分组和连接,以便获得多个结果行,您可以更改分隔符,依此类推.以下是有关此技术的其他几个链接:

http://blogs.technet.com/wardpond/archive/2008/03/15/database-programming-the-string-concatenation-xml-trick-revisited-or-adam-is-right-but-we-can- FIX-it.aspx

http://web.archive.org/web/20150328021904/http://sqlblog.com/blogs/adam_machanic/archive/2009/05/31/grouped-string-concatenation-the-winner-is.aspx