Bonjour,

j'ai le jeu de donnée suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
drop table #dco, #prise, #pick
go
CREATE TABLE #prise (interval   int     NOT NULL)
 
CREATE TABLE #dco (code       int         NOT NULL,
                   nb         int         NOT NULL)
 
 
CREATE TABLE #pick (code       int         NOT NULL,
                   res         int         NOT NULL)
 
insert #prise
select 1
union
select 6
 
insert #dco
select 1, 5
union
select 2, 7
 
insert #pick
select 1, -1
union
select 2, -1
Qui donne donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
interval     
------------ 
           1 
           6 
 
2 Row(s) affected
 
code   nb     
------ ------ 
     1      5 
     2      7 
 
2 Row(s) affected
 
code   res    
------ ------ 
     1     -1 
     2     -1 
 
2 Row(s) affected
J'ai fais la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
select #dco.code, #dco.nb, #prise.interval
FROM #dco, #prise, #pick
WHERE #pick.code = #dco.code
  AND #dco.nb    > #prise.interval
Qui me renvoie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
code         nb           interval     
------------ ------------ ------------ 
           1            5            1 
           2            7            1 
           2            7            6
En fait, j'aimerai obtenir que la valeur max de interval afin de l'utiliser dans l'update de #pick.res et donc faire un update par "intervalle"

L'update :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
update #pick
   set #pick.res = interval
FROM #dco, #prise
WHERE #pick.code = #dco.code
  AND #dco.nb    > #prise.interval
Me renvoi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
code         res          
------------ ------------ 
           1            1 
           2            1
Au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
code         res          
------------ ------------ 
           1            1 
           2            6

C'est possible de faire ça d'un coup d'un seul?