【问题标题】:SQL Server Stuff based on conditionSQL Server Stuff 基于条件
【发布时间】:2018-08-22 05:00:00
【问题描述】:

这是我当前的表。

ImageID    Brand     Segment
101        Kitkat     Biscuit
101        Galaxy     Biscuit
102        Kitkat     Chocolate
102        Kitkat     Chocolate
103        Kitkat     Chocolate
103        Twix       Ice Cream

我想要的桌子

ImageID    Brand             Segment
101        Kitkat,Galaxy     Biscuit
102        Kitkat            Chocolate
103        Kitkat, Twix      Chocolate, Ice Cream

我正在尝试按ImageID 分组。这样,如果ImageID 有多个记录。然后 BrandSegment 会是东西,但不会重复 [参考:102,Kitkat 和巧克力词没有重复]

提前致谢。

【问题讨论】:

  • stackoverflow.com/questions/451415/… 听起来对吗? Group_concat 是这个的常用术语,我相信你需要在 MSSQL 中伪造它
  • 记录 103。我有 kitkat 品牌和 twix。在部分我有巧克力和冰淇淋。所以基本上我想填充这两个值
  • @Twelfth 让我检查一下,但似乎你引导我走上正确的道路让我也检查一下。谢谢
  • stackoverflow.com/questions/17591490/… 可能会更好,使用 stuff 功能。谷歌搜索 MSSQL 2008 group_concat 提供了大量信息。显然 2017 年有更好的功能。

标签: sql sql-server sql-server-2008


【解决方案1】:

STUFF 是一种常见的 SQL Server 方法:

SELECT T.ImageID,
       STUFF((SELECT DISTINCT ',' + Brand
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Brand,
       STUFF((SELECT DISTINCT ',' + Segment
             FROM yourTable T2
             WHERE T2.ImageID= T.ImageID
             FOR XML PATH ('')),1,1,'') Segment
FROM yourTable T
GROUP BY T.ImageID

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 2017-11-01
    • 2019-12-18
    • 2022-10-15
    • 1970-01-01
    • 2018-05-27
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多