Im使用this MSDN page中的代码创建一个用户定义的聚合,以在SQL Server中连接字符串与group by's
。我的要求之一是连接值的顺序与查询中的顺序相同。例如:保存SQL用户定义的集合值顺序?
Value Group
1 1
2 1
3 2
4 2
使用查询
SELECT
dbo.Concat(tbl.Value) As Concat,
tbl.Group
FROM
(SELECT TOP 1000
tblTest.*
FROM
tblTest
ORDER BY
tblTest.Value) As tbl
GROUP BY
tbl.Group
会导致:
Concat Group
"1,2" 1
"3,4" 2
结果似乎总是正确的,具有符合市场预期,但比我碰到this page来,指出该订单不能得到保证,并且该属性SqlUserDefinedAggregateAttribute.IsInvariantToOrder
仅供将来使用。
所以我的问题是:是否正确假设字符串中的连接值可以以任何顺序结束?
如果是这种情况,那么为什么MSDN页面上的示例代码使用IsInvariantToOrder
属性?
不能回答你的MS的问题,但'GROUP_CONCAT'让你成为确定性有关的连接。 –
@kerrek - 注意这个标签为'SQL Server'不是'MySQL' – JNK
恐怕SQL Server 2008中没有'GROUP_CONCAT' – Magnus