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及更新版本