STRAGG函数实现将结果作为单列值返回。 Oracle的实现看起来非常通用,可以用于不同的表(和关系)。对于SQL Server可以实现类似的行为。在网上搜索,似乎只返回硬编码的实现,而不是通用的。我们有任何已知的Sql服务器解决方案吗?Tom Kyte的STRAGG函数是否支持SQL Server?
4
A
回答
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)
这个例子是从托尼·罗杰森的帖子在http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/07/06/871.aspx
你可以做更多的事情比这个简单的例子说明。您可以指定聚合内项目的顺序(在派生表中放置ORDER BY),可以进行分组和连接,以便获得多个结果行,可以更改分隔符等等。这里有几个关于这项技术的其他环节:
1
Anith森做了什么,我认为是最全面的答案,在他的文章 http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/ 级联排这个问题的SQL Server Transact-SQL中的值2008年7月31日。你会发现有很多不同的技术可以做到这一点,但我认为XML技巧是最快的。在SQL Server 2005之前,我们使用了在本文中作为注释显示的UPDATE技巧的变体。
相关问题
- 1. 是否IBM WebSphere支持SQL Server 2008的
- 2. SQL Server 2014是否支持ISNOTNULL()等函数?
- 3. AppHarbor支持的SQL Server CLR函数?
- 4. SQL Server是否支持分片?
- 5. SQL Server 2005是否支持datetime2
- 6. FluentNHibernate是否支持SQL Server Compact Edition 4.0?
- 7. log4net AdoNetAppender是否支持sql server 2008?
- 8. SQL Server是否支持散列索引?
- 9. SQL Server Compact不支持'CreateTime'函数
- 10. Oracle是否支持EVENTDATA()函数?
- 11. SQL Server CE是否支持空间数据类型的同步?
- 12. 是否有支持`va_list`的`printk()`函数?
- 13. Microsoft Sql Server 2012数据质量服务是否支持Oracle?
- 14. AppHarbor是否支持SQL Server数据库项目?
- 15. SQLMetal是否支持SQL-Server 2008数据类型?
- 16. Clang ++是否支持libC++支持constexpr数学函数
- 17. mysqli是否支持ms sql?
- 18. ORMLITE是否支持SQL EXISTS?
- 19. Azure SQL是否支持Kerberos?
- 20. 支持sql server表
- 21. SQL用户定义函数是否支持SELECT子句?
- 22. Python的MSSQL模块是否支持Microsoft 2000 SQL Server通信?
- 23. SQL Server CE是否支持NHibernate的模式更新?
- 24. SQL Server是否支持类似Oracle的WITH子句?
- 25. SQL Server是否支持几何列的统计信息?
- 26. MySql是否支持像SQL Server一样的xml?
- 27. Windows Server 2008是否支持MSDE?
- 28. VisualSVN Server 3是否支持HTTP压缩?
- 29. Lync Server 2013是否支持UCWA 2.0
- 30. VisualSVN Server是否支持廉价拷贝?
可能重复的[ListSQL在SQLSERVER](http://stackoverflow.com/questions/15477743/listagg-in-sqlserver) – Veverke 2015-09-03 14:19:32