重复问题,解决方法!

原贴:http://community.csdn.net/Expert/topic/3717/3717577.xml?temp=.4141199

有这样的一张表(有三列a、b、c):
a      b      c 
1     two    2003
1     two    2005
1     two    2004
2     four   2006
3     four   2008
现在我想把a、b列有相同值的记录合成一条记录,结果集如下:
a      b      c 
1     two    2004(该值也可以取2003或2005)
2     four   2006
3     four   2008
这样的sql语句怎么写??


--测试:

create table 表(a varchar(20), b varchar(20), c varchar(20) )
insert 表 select '1',    'two',   '2003'
union all select '1',    'two',   '2005'
union all select '1',    'two',   '2004'
union all select '2',    'four',  '2006'
union all select '3',    'four',  '2008'
go

select a,b
,(select top 1 c from 表 where a = d.a and b = d.b order by newid()) as c    
                                                                            --随机取c列的值,也可以用Max(c),Min(c), AVG(c)
from 表 d
group by a,b  --a,b 组合分组


drop table 表


--第一次测试结果:
a                    b                    c                   
-------------------- -------------------- --------------------
1                    two                  2004
2                    four                 2006
3                    four                 2008

(所影响的行数为 3 行)

--第二次测试结果:

a                    b                    c                   
-------------------- -------------------- --------------------
1                    two                  2005
2                    four                 2006
3                    four                 2008

--第十次测试结果:

a                    b                    c                   
-------------------- -------------------- --------------------
1                    two                  2003
2                    four                 2006
3                    four                 2008

(所影响的行数为 3 行)


--所有的值都是随机取的.........

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值