在 sql 中显示重复值

Displaying duplicate values in sql

我需要查找在一个 table 中的两个字段在指定日期范围内出现不止一次的所有记录。 我使用了下面的方法来显示重复项,但我需要在一段时间内指定,每当我尝试包含一个日期范围时,它就会开始显示所有记录,而不仅仅是重复项

如有任何帮助,我们将不胜感激!

SELECT  
y.ID,y.site,y.machine
  FROM calls y
    INNER JOIN (SELECT
                    site,machine, COUNT(*) AS CountOf
                    FROM calls
                    GROUP BY site,machine
                    HAVING COUNT(*)>1
                ) dt ON y.site=dt.site and y.machine=dt.machine

试试这个:

SELECT y.ID,
       y.site,
       y.machine
FROM   calls y
WHERE  y.date BETWEEN ... AND ...
  AND  EXISTS (SELECT x.ID
               FROM   calls x
               WHERE  x.site = y.site
                 AND  x.machine = y.machine
                 AND  x.date BETWEEN ... AND ...
                 AND  x.ID <> y.ID);

您必须在两个 sql 语句(内部和外部)中放置日期范围 where/on 条件才能获得您要查找的确切记录。这可以通过 where 语句完成,如下所示:

SELECT  
y.ID,y.site,y.machine
  FROM calls y
    INNER JOIN (SELECT
                    site,machine, COUNT(*) AS CountOf
                    FROM calls
                    WHERE Date BETWEEN StartOfRange AND EndOfRange
                    GROUP BY site,machine
                    HAVING COUNT(*)>1
                ) dt ON y.site=dt.site and y.machine=dt.machine
WHERE
    y.Date BETWEEN StartOfRange AND EndOfRange