Bonjour à tous !

Je voudrais votre avis sur une requête que j'utilise mais qui me semble un peu compliquée pour le but cherché

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 create table  #posbook
 (
 POS_security_id	int	 not null,
 POS_date		datetime not null,
 POS_book		float	null,
 POS_change		float	null,
 POS_sec_name		varchar(64)	null,
 POS_day		int, -- 1 si aujourd'hui, 0 si la veille
 POS_flag		int -- pour la mise en forme BO
 )

Je remplis une première fois la table avec des données de l'avant veille (POS_day = 0).

Je remplis ensuite avec les données de la veille (POS_day = 1).

Je cherche à mettre POS_flag à 1 quand une position de l'avant veille à une valeur différente la veille et à 0 quand il n'y a aucun mouvement.

je fais donc ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 -- on marque toutes les positions qui ont changés entre les 2 dates
 update #posbook 
 set  a.POS_flag = 1
 from #posbook  a 
 where a.POS_day = 1
 and exists (select * 
             from #posbook  b 
             where b.POS_day = 0 
               and a.POS_security_id = b.POS_security_id 
               and a.POS_book <> b.POS_book)
ça vous pourrait correct ?
il y a plus simple peut-être ?


Merci