SQL查询以格式化结果

SQL查询以格式化结果,sql,sql-server-2005,formatting,Sql,Sql Server 2005,Formatting,我有以下格式的数据: 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|

我有以下格式的数据:

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的。

因为您没有指定要使用的数据库系统-在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

如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮{},以很好地格式化和语法突出显示它!SQL数据库存储数据—您不应该使用它们进行数据可视化/表示—这是UI组件的工作—您需要group_concat或类似的组件。这肯定是个骗局。您的其他问题是SQL Server,所以可能是关于这个问题,您是如何决定分组的?我假设某处有某种类别id。如果您使用的是MySQL,请查看GROUP_CONCAT。@marc_s:有数百万个理由可以说明为什么您希望在数据库中这样做。我想这是超越这个问题的…对不起,它是在SQL Server中2005@Om:也应该在SQL Server 2005中工作!2005及更新版本