[英]How to skip current records if previous records is same [duplicate]
我想从 SQL 获取记录,但条件是,如果以前的记录与当前记录相同,那么它应该跳过当前记录,但是在某些记录记录在数据中重复之后,如果相同的条件发生当前记录与以前的记录相同,则应该只取一次应该跳过该记录
我搜索并放置了我们的表格数据以获得结果。
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.