有关多行相同数据,只显示在第一行的实现

查询出的原始数据:

可以看出,标红的两列有大量的重复数据,而我们需要的最终效果如下图所示:

具体的实现,先上SQL吧:

1 with cte as(
2 select rid=row_number() over (partition by player_ID,a.player_name order by player_name),* from playinfo_demo1 a
3 )
4 select 
5 CASE when rid=1 then ltrim(player_ID) else '' END AS ID,
6 CASE when rid=1 then ltrim(player_name) else '' END AS name,
7 play_year,play_count FROM cte

 

在 SQL Server 数据库中,为咱们提供了一个函数 row_number() 用于给数据库表中的记录进行标号,在使用的时候,其后还跟着一个函数 over(),而函数 over() 的作用是将表中的记录进行分组和排序。两者使用的语法为:

意为:将表中的记录按字段 COLUMN1进行分组,按字段 COLUMN2 进行排序,其中

PARTITION BY:表示分组ORDER BY:表示排序

1 SELECT player_ID,player_name,play_year,play_count,rid = ROW_NUMBER() OVER(PARTITION BY player_ID   ORDER BY player_name) FROM playinfo_demo1

上述SQL语句就是按照 player_ID进行了分组,然后按照player_name 进行了排序,因此运行结果如下所示:

 


 

 
 

 

转载于:https://www.cnblogs.com/yaoruozi/p/9002878.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值