如果我在一个SQL数据库(访问前端)中有几行,除了一个字段(我知道规范化,但我很高兴地说这不是我的工作!),有一个简单的方法选择具有公共数据的一行并一起显示另一个字段的所有值?我可以编写一个函数以编程方式执行,但是我知道这是一种更简单的方法吗?
例如
animal brown dog
animal brown cat
animal brown horse
作为
animal brown dog, cat, horse
答案 0 :(得分: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
答案 1 :(得分: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