如何合并相同单元格的数据

在平常的开发中常会碰到这样的情景
数据格式如下
销售人员   销售产品        销售日期        数量      金额 
A                 ProductaA     2007-1-1       900       5000
A                 ProductaA     2007-1-12     900       9000
A                 ProductaA     2007-1-23     800       8000
B                 ProductaB     2007-1-13     300       9000
B                 ProductaB     2007-1-20     100       6000
B                 ProductaB     2007-1-3 0    950       7000

因为销售人员, 销售产品 很多都是重复的,在显示查看的时候觉得有些重复,希望以下面的格式显示
销售人员   销售产品        销售日期        数量      金额 
A                 ProductaA     2007-1-1       900       5000
                                           2007-1-12     900       9000
                                           2007-1-23     800       8000
B                ProductaB     2007-1-13     300       9000
                                           2007-1-20     100       6000
                                           2007-1-30     950       700

思路:
想要消除重复出现的数据,那么应该可以定义一个消除的依据,上情景情况下是将相同的销售人员和销售产品消除
我们可以通过表自己的关联比较,同时加上一个可以区别的字段,那么这个字段可以通过identity(int, 1, 1)来实现
select  identity(int ,1, 1) as findex, FSaler, FSaleProduct, FSaleDate, FSaleQty, fSaleAmount
into #tmp
from tableA
order by  FSaler, FSaleProduct, FSaleDate --定义排序,因为到了后面修改的时候就无法排序了


update t1 set FSaler = '', FSaleProduct = ''
from #tmp t1, #tmp t2
where t1.FSaler = t2.FSaler and t1.FSaleProduct = t2.FSaleProduct
            and t1.FIndex > t2.FIndex  --这句是关键所在

select * from #tmp

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值