在 sql 服务器中过滤两个连续的行号
Filter two consecutive row numbers in sql server
我正在使用此代码查找重复项
代码:
select donrId,
donrFirstName,
donrLastName,
donrBirthDate,
ROW_NUMBER() over (
partition by donrFirstName,
donrBirthDate order by donrLastName
) as SequenceNumber
from donors ) as dd
where dd.SequenceNumber > 1
order by donrId
问题:
我无法过滤两个连续数字(例如 1 和 2)的分区结果集
期望的结果:
donrFirstName |donrLastName |donrBirthDate |SequenceNumber
---------------------------------------------------------------
king |kong |25/05/2017 |1
king |kong |25/05/2017 |2
您的查询将 return 仅记录序列号 > 1 的记录。要 return 所有以数字 1 开头的记录,您可以使用 COUNT(*)
window 函数,像这样:
SELECT
donrId, donrFirstName, donrLastName, donrBirthDate, SequenceNumber
FROM
(SELECT
donrId, donrFirstName, donrLastName, donrBirthDate,
ROW_NUMBER() OVER (PARTITION BY donrFirstName, donrBirthDate ORDER BY donrLastName) AS SequenceNumber
COUNT(*) OVER (PARTITION BY donrFirstName, donrBirthDate) AS cnt
FROM
donors) AS dd
WHERE
dd.cnt > 1
ORDER BY
donrId
我正在使用此代码查找重复项
代码:
select donrId,
donrFirstName,
donrLastName,
donrBirthDate,
ROW_NUMBER() over (
partition by donrFirstName,
donrBirthDate order by donrLastName
) as SequenceNumber
from donors ) as dd
where dd.SequenceNumber > 1
order by donrId
问题:
我无法过滤两个连续数字(例如 1 和 2)的分区结果集
期望的结果:
donrFirstName |donrLastName |donrBirthDate |SequenceNumber
---------------------------------------------------------------
king |kong |25/05/2017 |1
king |kong |25/05/2017 |2
您的查询将 return 仅记录序列号 > 1 的记录。要 return 所有以数字 1 开头的记录,您可以使用 COUNT(*)
window 函数,像这样:
SELECT
donrId, donrFirstName, donrLastName, donrBirthDate, SequenceNumber
FROM
(SELECT
donrId, donrFirstName, donrLastName, donrBirthDate,
ROW_NUMBER() OVER (PARTITION BY donrFirstName, donrBirthDate ORDER BY donrLastName) AS SequenceNumber
COUNT(*) OVER (PARTITION BY donrFirstName, donrBirthDate) AS cnt
FROM
donors) AS dd
WHERE
dd.cnt > 1
ORDER BY
donrId