重复两次2次时,在sql server中合并记录

时间:2014-11-18 22:38:36

标签: sql sql-server sql-server-2005

我在sql server 2005上的表中有如下记录

fname  lname  address  zip 
xxx    yyy     UK      001 
zzz    yyy     UK      001 
aaa    yyy     UK      002  
ddd    jjj     US      003 
eee    jjj     US      003 

我需要以下列格式得到结果

fname    lname  address  zip
xxx,zzz   yyy    UK      001
ddd,eee   jjj    US      003

基本上每个具有计数地址和邮编2次的记录都会将其名字分组并用逗号分隔。

好的这是我的方法:但现在没有工作和卡住

select fname, lname, address, zip from table people 
where address is not null
and zip is not null
group by address,zip 
having count(address)=2 and count (zip)=2 
order by address

- 现在要合并我正在使用的记录

SELECT fname = COALESCE(fname + ', ', '') + ISNULL(fname, 'N/A'), fname, lname,streetname, housenumber
FROM people 
WHERE address is not null and zip is not null  
group by address,zip 
having count(address)=2 and count (zip)=2 
order by address

1 个答案:

答案 0 :(得分:1)

我不认为这是重复的,因为它不需要group_concat()之类的东西。 OP特别要求两次次,你可以这样做:

select min(fname) + ',' + max(fname), lname, address, zip
from table t
group by lname, address, zip
having count(*) = 2;

当然,更多匹配行的一般答案无法通过这种方式解决,但问题明确地说“拉链2次”。