2016-08-22 4 views
0

Мне нужно найти все записи, в которых два поля в одной таблице встречаются более одного раза в заданном диапазоне дат. Я использовал ниже, что позволяет мне отображать дубликаты, но мне нужно указать в течение определенного периода времени, когда я пытаюсь включить диапазон дат, он начинает отображать все записи не только дубликатовОтображение повторяющихся значений в sql

Любая помощь будет много оценили!

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 
+1

показать нам код с диапазоном дат – montewhizdoh

+1

Конечно, просто добавив критерии даты, чтобы вы SELECT ... GROUP BY даст вам то, что вы хотите. – AntDC

ответ

0

Вы должны поместить диапазон дат, где/о состоянии в обоих операторов SQL (внутренний & внешний) для того, чтобы получить точные записи, которые вы ищете. Это может быть сделано через где заявления следующим образом:

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 
+0

Спасибо, это то, чего я отсутствовал, я только добавлял его в один из операторов sql! –

-1

Попробуйте это:

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);