cette question est liée à la mienne il y a juste une minute. Je cherche des enregistrements en double dans une table. Je suis à la recherche de champs correspondants "Symbol" et "TradeDate". J'ai un champ ID unique pour la table. Ma logique est la suivante: renvoyer les enregistrements avec un champ ID qui n'est pas la valeur d'ID minimale qui a un nombre> 1 pour ce symbole et la combinaison de date. Voici ce que j'ai ... sql server ne se plaint pas jusqu'à ce que je le lance, il dit que mon sous-requête retourne plus d'une valeur:Sous-requête SQL pour trouver des doublons
SELECT Symbol , ID FROM tblDailyPricingAndVol
WHERE (SELECT Count(TradeDate) FROM tblDailyPricingAndVol AS T2
WHERE T2.Symbol = Symbol AND T2.TradeDate = TradeDate GROUP BY Symbol) > 1
AND ID <> (SELECT MIN(ID) FROM tblDailyPricingAndVol AS T3
WHERE T3.Symbol = Symbol AND T3.TradeDate = TradeDate
GROUP BY Symbol)
Merci. J'ai édité ma description de la logique en fonction de votre message ... Je veux retourner tout sauf l'identifiant minimum. Quand je travaille, je vais le changer en une instruction delete. Existe-t-il un moyen de le faire avec un simple select/subquery? (pas familier avec PARTITION). Je me demande comment l'une ou l'autre de mes sous-requêtes peut renvoyer plus d'une valeur, chacune étant une fonction agrégée. – StatsViaCsh
On dirait que je vous ai préempté. PS Dans les sous-requêtes, vous avez uniquement le symbole GROUP BY. –
Je viens d'attraper ça ... J'ai changé pour "GROUP BY Symbol, TradeDate" en vain. – StatsViaCsh