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

    技术2022-07-11  91

    一、问题描述:

    --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)

    效果展示

    三、本文结束

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

    Processed: 0.010, SQL: 9