我有一个表,我试图使用公用表表达式找到重复的行。我使用的字段如下:
LogTime(DataType:datetime2(7),null) ControllerIP(数据类型:nvchar(max),null)
据我所知,我有两行数据,其中包含相同的数据。我对两列进行了LEN检查,以确保它们的长度相等,但行不会重复 使用下面的CTE时。我需要对LogTime列有什么不同吗?我从来没有碰到过这个。
WITH CTE AS
(
SELECT rn = ROW_NUMBER()
OVER(
PARTITION BY LogTime , ControllerIP
ORDER BY Id ASC), *
FROM [DownTime].[dbo].[Records]
)
SELECT * FROM cte
WHERE FileName = '141101.CSV' AND rn > 1
Order By ID
GO
另外,我使用的是Microsoft SQL Server 2008R2。
答案 0 :(得分:1)
你的计划很健全。如果您没有找到重复项,那是因为重复项不存在。您可以对列应用某些函数以更有可能查找重复项,例如从IP修剪空格并降低datetime2的精度。
WITH CTE AS (
SELECT rn = ROW_NUMBER() OVER(
PARTITION BY CAST(LogTime AS datetime2(2)), RTRIM(LTRIM(ControllerIP))
ORDER BY Id ASC), *
FROM [DownTime].[dbo].[Records]
)
SELECT * FROM cte
WHERE FileName = '141101.CSV' AND rn > 1
Order By ID