【问题标题】:Sql aggregate function to obtain a listsql聚合函数获取列表
【发布时间】:2012-03-10 15:35:32
【问题描述】:

嘿!

如何创建聚合函数来获取聚合值列表。

给定:

key     value
Andrei  1
Andrei  2
Andrei  3
Mihai   4
Mihai   5
Mihai   6

我想要

key list
Andrei 1,2,3
Mihai 4,5,6

【问题讨论】:

    标签: sql sql-server sql-server-2008 aggregate-functions


    【解决方案1】:

    MS SQL 解决方案: [注意:此解决方案仅适用于 SQL 2005 及更高版本。原始问题未指定使用的版本。]

    SELECT 
    key
    , STUFF((SELECT ',' + CAST([value] AS nvarchar(max)) FROM <#Table#> WHERE (key = Results.key) FOR XML PATH ('')),1,2,'') AS NameValues
    FROM <#Table#> Results
    GROUP BY key
    

    【讨论】:

    • 该解决方案的好处是,如果您的子字符串中有无效的 xml 字符,它不会崩溃。哦,哎呀,是的。
    • 据我所知价值只是 int,所以这不是问题
    • 我更喜欢在问题出现时解决问题,而不是编写 gigs 通用解决方案来适应所有未来和可能的需求。
    • 我的观点是为什么选择以难以检测的方式失败的可爱解决方案(我知道这一点是因为有人告诉我这是一个多么可爱的解决方案,然后我不得不重写它,因为它失败了一种复杂的方法)当你可以使用一些不太可爱的东西时。
    【解决方案2】:

    【讨论】:

    • 我想创建一个自定义聚合函数,比如 sum()。有可能吗?
    • 我在您的文章中找到了它。谢谢
    • 发布文章链接会使这个答案容易受到链接腐烂的影响。相反,请将您从该链接中学到的内容改为在此处发布。
    【解决方案3】:

    你需要模拟MySQL的group_concat函数。

    查看this article了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2018-05-20
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多