【问题标题】:SQL query to format the result用于格式化结果的 SQL 查询
【发布时间】:2011-02-14 15:06:24
【问题描述】:

我有以下格式的数据:

24  Asian Fish
24  Atlantis
24  Bakery
24  Bistro
24  Bon Appetite
24  Camo
24  Fish Bones
25  Black
38  Black
38  Burgundy
38  Dark Green
38  Navy
38  Red

您能否建议可以使用以下方式格式化它的查询:

24       Asian Fish|Atlantis|Bakery|Bistro|Bon Appetite|Camo|Fish Bones
25       Black
38       Black|Burgundy|Dark Green|Navy|Red

这适用于 SQL Server 2005。

【问题讨论】:

  • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ({})很好地格式化和语法高亮它!
  • SQL 数据库 存储 数据 - 您不应该使用它们来进行数据可视化/呈现 - 这是 UI 组件的工作
  • 您需要group_concat 或类似名称。这肯定是一个骗局。你的其他问题是 SQL Server 所以可能是这个stackoverflow.com/questions/451415/…
  • 你是如何决定分组的?我假设某处有某种类别ID。如果您使用的是 MySQL,请查看GROUP_CONCAT
  • @marc_s:有数以百万计的理由让人们想要在数据库中执行此操作。我想这超出了这个问题......

标签: sql sql-server-2005 formatting


【解决方案1】:

由于您没有指定您使用的数据库系统 - 这是在 SQL Server(2005 及更高版本)中执行此操作的一种方法:

SELECT 
    DISTINCT ID,
    STUFF((SELECT '|' + t2.Fishy
     FROM dbo.YourTable t2
     WHERE t2.ID = t.ID
     FOR XML PATH('')), 1, 1, '') 'Fishes'
FROM dbo.YourTable t

这将产生输出:

ID  Fishes
24  Asian Fish|Atlantis|Bakery|Bistro|Bon Appetite|Camo|Fish Bones
25  Black
38  Black|Burgundy|Dark Green|Navy|Red

【讨论】:

  • 对不起,它在 SQL Server 2005 中
  • @Om: 也应该在 SQL Server 2005 中工作! 2005(及更新)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多