J'ai une table table1 (account, last_contact_date, insert_date), compte et last_contact_date sont des clés primaires. Le paramètre insert_date est défini avec l'heure à laquelle le recored est ajouté en appelant getdate(). J'ai aussi une table temporaire #temp (account, last_contact_date) que j'utilise pour mettre à jour la table1.comment insérer en fonction de la date
Voici des exemples de données:
table1
account last_contact_date insert_date
1 2012-09-01 2012-09-28
2 2012-09-01 2012-09-28
3 2012-09-01 2012-09-28
#temp
account last_contact_date
1 2012-09-27
2 2012-09-27
3 2012-08-01
Le tableau de résultat dépend de la date d'insertion. Si la date est 2012-09-28, le résultat sera
table1
account last_contact_date insert_date
1 2012-09-27 2012-09-28
2 2012-09-27 2012-09-28
3 2012-09-01 2012-09-28
Si la date est 29/09/2012, le résultat sera
table1
account last_contact_date insert_date
1 2012-09-01 2012-09-28
2 2012-09-01 2012-09-28
3 2012-09-01 2012-09-28
1 2012-09-27 2012-09-29
2 2012-09-27 2012-09-29
Fondamentalement, la règle est (1) si la date d'insertion est le même jour, je choisirai le dernier last_contact_date, sinon, (2) si le last_contact_date est postérieur au dernier current_contact_date, je vais en insérer un nouveau.
Comment écrire une requête pour cet insert?
C'est probablement le moyen le plus rapide de le faire. L'alternative consiste à effectuer plusieurs requêtes, notamment select, update et insert. –
Attendez, cette méthode obtiendra une erreur si la date d'insertion est différente. L'erreur est la violation de la contrainte PRIMARY KEY. – GLP
Vous avez raison. J'ai lu le pkey mal. Cependant, je ne suis pas ici pour écrire votre code pour vous. Le concept reste. Supprimer, sélectionnez w/group et Insert. Ajustez votre logique de regroupement pour vous assurer d'avoir des PKeys à 2 colonnes uniques. –