Voici des exemples de données pour la table aw. D'après votre description, je pense que vous voulez jeter les lignes avec ID
valeurs de 2, 3 et 5.
ID symbol direction range price percent
1 a x 15 10 5
2 a x 20 10 5
3 b y 40 50 5
4 b y 10 50 5
5 a x 15 10 5
déterminer la valeur de plage minimum pour chaque combinaison de symbol
, direction
, price
et percent
.
qryMinRanges:
SELECT
aw.symbol,
aw.direction,
aw.price,
aw.[percent],
Min(aw.range) AS MinOfrange
FROM aw
GROUP BY
aw.symbol,
aw.direction,
aw.price,
aw.[percent];
... qui donne à ce jeu de résultats:
symbol direction price percent MinOfrange
a x 10 5 15
b y 50 5 10
Déterminer le ID
minimum pour chacune de ces gammes minimales.
qryMinID_forMinRanges:
SELECT
q.symbol,
q.direction,
q.price,
q.[percent],
q.MinOfrange,
Min(aw.ID) AS MinOfID
FROM
qryMinRanges AS q
INNER JOIN aw
ON
(q.MinOfrange = aw.range)
AND (q.[percent] = aw.[percent])
AND (q.price = aw.price)
AND (q.direction = aw.direction)
AND (q.symbol = aw.symbol)
GROUP BY
q.symbol,
q.direction,
q.price,
q.[percent],
q.MinOfrange;
... qui donne à ce jeu de résultats:
symbol direction price percent MinOfrange MinOfID
a x 10 5 15 1
b y 50 5 10 4
Alors qryMinID_forMinRanges devrait représenter les lignes que vous souhaitez conserver. En fin de compte, vous allez supprimer les lignes de aw dont les valeurs d'ID ne sont pas incluses dans qryMinID_forMinRanges. Mais essayez d'abord cette requête SELECT
pour confirmer que vous ciblez les enregistrements corrects pour la suppression.
SELECT
aw.ID,
aw.symbol,
aw.direction,
aw.range,
aw.price,
aw.[percent]
FROM aw
WHERE aw.ID Not In
(SELECT MinOfID FROM qryMinID_forMinRanges);
... qui me donne cet ensemble de résultats:
ID symbol direction range price percent
2 a x 20 10 5
3 b y 40 50 5
5 a x 15 10 5
Donc, si cela semble correct, modifiez à une requête SUPPRIMER.
DELETE *
FROM aw
WHERE
(((aw.ID) Not In
(SELECT MinOfID FROM qryMinID_forMinRanges)));
Le moteur db ne nécessite pas l'*
après SUPPR. Mais si vous souhaitez utiliser l'aperçu du concepteur de requêtes, vous devez lui donner une spécification de champ à afficher.
Veuillez prendre des précautions pour protéger vos données au cas où j'aurais foiré des détails ici. Les sauvegardes sont bonnes. :-)
Je ne suis pas sûr de votre premier paragraphe. Cela signifie-t-il que vous ne voulez conserver qu'une seule ligne pour chaque combinaison de symbole, de direction, de prix et de pourcentage?et cette ligne devrait être la première avec la valeur de gamme la plus basse pour cette combinaison de champs? – HansUp
@HansUp c'est exactement ce que je veux – Mike