我们有些SQL杂语。说我有一个看起来像这样的结果…
61E77D90-D53D-4E2E-A09E-9D6F012EB59C | A 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | B 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | C 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | D 7ce953ca-a55b-4c55-a52c-9d6f012ea903 | E 7ce953ca-a55b-4c55-a52c-9d6f012ea903 | F
有没有一种方法可以将这些结果在SQL中分组以返回为
61E77D90-D53D-4E2E-A09E-9D6F012EB59C | ABCD 7ce953ca-a55b-4c55-a52c-9d6f012ea903 | 英孚
有什么想法的人吗?
非常感谢
戴夫
我更喜欢定义一个自定义的用户定义的聚合。 这是一个UDA的示例,它可以完成非常接近您要求的功能。
为什么使用用户定义的聚合而不是嵌套的SELECT?一切都与性能以及您愿意忍受的东西有关。对于少量元素,您当然可以避免使用嵌套的SELECT,但是对于较大的“ n”,您会注意到查询计划实际上对输出列表中的每一行运行一次嵌套的SELECT。如果您要谈论大量的行,这可能是死亡之吻。使用UDA,可以一次汇总这些值。
当然,要权衡的是UDA要求您使用CLR进行部署,而这并不是很多人经常做的事情。在Oracle中,这种特殊情况会更好一些,因为您可以直接使用PL / SQL创建用户定义的聚合,但是我离题了…