J'ai une requête d'insertion qui passe dans une table liée aux QuickBooks. La table Test_invoiceline a beaucoup de Part_id's et des descriptions qui sont exactement les mêmes.
INSERT INTO InvoiceLine (Part_ID, More_Info ) SELECT Part_ID, Description FROM Test_InvoiceLine;
3 Réponses :
Ceci est SQL Server, cependant, Row_Number est largement utilisé dans d'autres RDM.
Voici la requête dont vous avez besoin. P>
;WITH Data AS
(
SELECT
More_Info,
Part_ID,Description,
RowNumber = ROW_NUMBER() OVER(PARTITION BY Part_Id,Description ORDER BY Part_Id,Description)
FROM Test_InvoiceLine
)
DELETE T
FROM Test_InvoiceLine T
INNER JOIN Data D ON D.RowNumber > 1 AND D.MoreInfo = "Y" AND D.Part_Id = T.Part_ID
OK qui semble près de ce que je cherche, mais j'en ai besoin pour supprimer des valeurs en fonction de deux paramètres. Peut-être quelque chose comme où part_id et plus_info est> 1
Mis à jour avec plus d'informations.
Utilisez un CTE comme jeu de résultats temporaires. Vous interrogez essentiellement pour des enregistrements en double partitionné par vos critères et supprimez les enregistrements qui ne sont pas le premier enregistrement (conserve l'enregistrement d'origine).
Vérifiez-moi avant de couper quelque chose, car cela a été un moment depuis que Je l'ai fait, mais cela devrait fonctionner. p> source: Comment supprimer des enregistrements en double sur SQL Server P> P>
Y a-t-il une raison pour laquelle vous devez faire un insertion puis supprimer? Si vous essayez d'insérer -> Supprimer, il ressemble à vous d'essayer de mettre à jour les données par Ceci mettra à jour Part_id code>. plus_info code> dans la table code> infoiceline code> avec Description code>. P> P> P> P> P> P> P> >
Pouvez-vous supprimer avant d'insérer?
Non, il faut faire après dans la table de factoCeline
De plus, vous insérez
description code> dansID de pièce code> ... qui semble éteint. Pouvez-vous s'il vous plaît vérifier la requête que vous avez posté?Y a-t-il une colonne clé qui a une valeur unique pour chaque ligne?
J'ai mis à jour le post
Veuillez ajouter la balise pour la base de données particulière que vous utilisez.
Microsoft Access