如果我在 SQL 数据库(访问前端)中有几行,除了一个字段之外,数据几乎完全一致(我知道规范化,但我很高兴地说这不是我做的!),有没有一种简单的方法来选择一行使用公共数据并将其他字段的所有值一起显示?我可以编写一个函数以编程方式完成它,但我想知道有更简单的方法吗?
例如
animal brown dog
animal brown cat
animal brown horse
作为
animal brown dog, cat, horse
如果我在 SQL 数据库(访问前端)中有几行,除了一个字段之外,数据几乎完全一致(我知道规范化,但我很高兴地说这不是我做的!),有没有一种简单的方法来选择一行使用公共数据并将其他字段的所有值一起显示?我可以编写一个函数以编程方式完成它,但我想知道有更简单的方法吗?
例如
animal brown dog
animal brown cat
animal brown horse
作为
animal brown dog, cat, horse
你可以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
以下是您需要使用的技术示例:
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