2

如果我在 SQL 数据库(访问前端)中有几行,除了一个字段之外,数据几乎完全一致(我知道规范化,但我很高兴地说这不是我做的!),有没有一种简单的方法来选择一行使用公共数据并将其他字段的所有值一起显示?我可以编写一个函数以编程方式完成它,但我想知道有更简单的方法吗?

例如

animal   brown   dog

animal   brown   cat

animal   brown   horse

作为

animal   brown   dog, cat, horse
4

2 回答 2

3

你可以STUFF()用来得到这个:

select distinct col1, col2,
  Stuff((SELECT N', ' + col3 
         FROM yourtable t2
         where t1.col1 = t2.col1
         FOR XML PATH(''),TYPE)
        .value('text()[1]','nvarchar(max)'),1,2,N'')
from yourtable t1

SQL Fiddle with Demo

于 2012-09-12T15:48:36.863 回答
1

以下是您需要使用的技术示例:

select 'test' as Test, 1 as Item 
into #test 
union select 'test2', 2 
union select 'test', 3 
union select NUll, 4 
union select 'test', 5 

select t2.test, STUFF((SELECT  ', ' + cast(t1.Item as varchar (10) )
        FROM #test t1 where t2.test = t1.test 
        FOR XML PATH('')), 1, 1, '') 
     from #test t2
     group by t2.test
于 2012-09-12T15:47:30.210 回答