繁体   English   中英

如果以前的记录相同,如何跳过当前记录[重复]

[英]How to skip current records if previous records is same [duplicate]

我想从 SQL 获取记录,但条件是,如果以前的记录与当前记录相同,那么它应该跳过当前记录,但是在某些记录记录在数据中重复之后,如果相同的条件发生当前记录与以前的记录相同,则应该只取一次应该跳过该记录

请查看下图https://imgur.com/a/GknMm3N

我搜索并放置了我们的表格数据以获得结果。

    SELECT url_rec,record_timestamp
FROM (
    SELECT *
         , LAG(url_rec) OVER (ORDER BY url_rec) AS prev_title
    FROM raw_activity_log
) AS x
WHERE url_rec <> prev_title ORDER BY id

由于 LAG 不是 SQL-Server-2008 中的 function,因此您还可以将 ROW_NUMBER function 与自连接一起使用。

DECLARE @table TABLE( 
    [ID] int IDENTITY(1,1) 
    ,[NAME] varchar(3) 
); 

INSERT INTO @table 
    VALUES ('XYZ'), ('XYZ'), ('XYZ'), ('PQR'), ('PQR'), ('RST'), ('RST'), ('XYZ')

SELECT 
    T1.[ID] 
    ,T1.[NAME] 
FROM (
    SELECT 
        [ID] 
        ,[NAME] 
        ,ROW_NUMBER() OVER (ORDER BY [ID]) AS 'RowNum' 
    FROM @table T 
) T1 
LEFT JOIN (
    SELECT 
        [ID] 
        ,[NAME] 
        ,ROW_NUMBER() OVER (ORDER BY [ID]) AS 'RowNum' 
    FROM @table T 
) T2 
    ON T2.[RowNum] + 1 = T1.[RowNum] 
WHERE T1.[NAME] <> ISNULL(T2.[NAME], '') 
ORDER BY T1.[ID]; 

不是一个完美的答案,但只要您没有大量记录,它就可以解决问题。 应该返回:

ID 姓名
1 XYZ
4 二维码
6 RST
8 XYZ

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM