SQL 查询每一组最后一条记录并显示在同一表内

一、问题描述:

--1.创建数据表
 create table DB_TABLE_NAME 
 (
 TN_COLUMN_ID  numeric (18, 0) IDENTITY(1,1) NOT NULL,
 TN_COLUMN_NAME nvarchar(20) not null,
 TN_COLUMN_ADD_TIME datetime not null
 )
--2.添加数据 添加多次以模拟同一组有多条数据的情况
  insert DB_TABLE_NAME values('第一组',(CONVERT(varchar(100), GETDATE(), 20))) 

  insert DB_TABLE_NAME values('第二组',(CONVERT(varchar(100), GETDATE(), 20))) 

  insert DB_TABLE_NAME values('第三组',(CONVERT(varchar(100), GETDATE(), 20))) 

  insert DB_TABLE_NAME values('第四组',(CONVERT(varchar(100), GETDATE(), 20)))  

1.1 查询结果展示
在这里插入图片描述
1.2 需求描述
在同一组存在多条数据的情况下,查出每一组最后一条纪录并显示在同一表内。比如:
在这里插入图片描述

二、解决方案:

NO.1

--方案一
  SELECT * from DB_TABLE_NAME where TN_COLUMN_ID in (
  SELECT max(TN_COLUMN_ID) as MAX_TN_COLUMN_ID  from DB_TABLE_NAME group by TN_COLUMN_NAME


效果展示:
在这里插入图片描述
NO.2

--方案二
 SELECT * from DB_TABLE_NAME where TN_COLUMN_ID in (
 SELECT  top(1) TN_COLUMN_ID  FROM DB_TABLE_NAME WHERE TN_COLUMN_NAME='第一组' ORDER BY TN_COLUMN_ID desc 
 union
 SELECT  top(1) TN_COLUMN_ID FROM DB_TABLE_NAME WHERE TN_COLUMN_NAME='第二组' ORDER BY TN_COLUMN_ID desc)

效果展示
在这里插入图片描述

三、本文结束

如果这篇博客对您有所帮助的话,将是我的荣幸,如果能够再点个赞的话,将是多么美好的一件事。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值