MS SQL de mise à jour de la table avec plusieurs conditions

Été la lecture de ce site pour avoir des réponses pour un bon moment et maintenant de poser ma première question!

Je suis à l'aide de SQL Server

J'ai deux tables, ABC et ABC_Temp.

Le contenu est inséré dans le ABC_Temp d'abord avant de faire son chemin à l'ABC.
Tableau ABC et ABC_Temp ont les mêmes colonnes, sauf que ABC_Temp a une colonne supplémentaire appelé LastUpdatedDate, qui contient la date de la dernière mise à jour. Parce que ABC_Temp pouvez avoir plus de 1 du même dossier, il a une clé composite de l'article et le numéro de la dernière date de mise à jour.

Les colonnes sont: ItemNo | Prix | Qté et ABC_Temp a une colonne supplémentaire: LastUpdatedDate

Je veux créer une déclaration qui suit les conditions suivantes:

  1. Vérifier si chacun des attributs de ABC différer de la valeur de ABC_Temp pour les enregistrements ayant la même clé, si oui, alors faire la mise à jour (Même si un seul attribut est différent, tous les autres attributs peuvent être mis à jour)
  2. Mettre à jour uniquement ceux qui ont besoin de changements, si le dossier est le même, alors il ne serait pas mise à jour.
  3. Depuis un élément peut avoir plus d'un enregistrement dans ABC_Temp je veux seulement le dernier jour d'être mis à jour ABC

Je suis actuellement à l'aide de 2005 (je crois, pas au travail à l'heure actuelle).

Ce sera dans une procédure stockée et est appelée à l'intérieur de la VBscript tâche planifiée. Donc, je crois que c'est une fois de temps chose. Aussi, je ne suis pas en train de synchroniser les deux tableaux, comme le contenu de ABC_Temp serait seulement contenir de nouveaux records d'insertion en bloc à partir d'un fichier texte par le biais de la PCA. Pour des raisons de contexte, il est utilisé en conjonction avec un insert procédure stockée qui vérifie si des documents existent.

La version de SQL Server que vous utilisez?
Prière de décrire le scénario d'usage - est-ce un travail à temps où vous souhaitez synchroniser 2 tables en une seule fois, ou vous projetez de le faire sur un calendrier. Ou vous voulez le faire de manière dynamique à chaque fois qu'un nouvel enregistrement est poussé à ABC_Temp, vous devez mettre à jour ABC.
Ce sera dans une procédure stockée et est appelée à l'intérieur de la VBscript tâche planifiée. Donc, je crois que c'est une fois de temps chose. Aussi, je ne suis pas en train de synchroniser les deux tableaux, comme le contenu de ABC_Temp serait seulement contenir de nouveaux records d'insertion en bloc à partir d'un fichier texte par le biais de la PCA. Pour des raisons de contexte, il est utilisé en conjonction avec un insert procédure stockée qui vérifie si des documents existent
mise à jour de la question, et ajouter un commentaire souligné 🙂

OriginalL'auteur zentenk | 2011-06-23