2016-08-22 7 views
0

Je dois trouver tous les enregistrements dans lesquels deux champs d'une table apparaissent plusieurs fois dans une plage de dates spécifiée. J'ai utilisé le ci-dessous qui me permet d'afficher les doublons, mais je dois spécifier dans un certain laps de temps, chaque fois que j'essaie d'inclure une plage de dates il commence à afficher tous les enregistrements et pas seulement les doublonsAffichage des valeurs en double en m²

Toute aide serait beaucoup apprécié!

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

nous montrent le code avec la plage de dates – montewhizdoh

+1

Sûrement que l'ajout des critères de date pour vous ... SELECT GROUP BY vous donnera ce que vous voulez. – AntDC

Répondre

0

Vous devez placer la plage de dates où/condition dans les deux instructions SQL (interne & externe) afin d'obtenir les enregistrements exacts que vous recherchez. Cela peut se faire par où les déclarations comme suit:

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

Merci, c'est ce qui me manquait je ne faisais que l'ajouter à l'une des déclarations SQL! –

-1

Essayez ceci:

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