2010-01-18 7 views
0

j'ai besoin d'une requête de mise à jour pour définir les valeurs nulles avec une autre valeur dans le même groupemise à jour de requêtes SQL

par exemple

Table 
    filed1 filed2  filed3 
    1   e   1/1/2009 
    1   e   null 
    1   e   1/1/2009 
    2   f   2/2/2009 
    2   f   2/2/2009 
    2   f   null 
    3   g   3/3/2009 
    3   g   null 

Résultat attendu

filed1 filed2  filed3 
1   e   1/1/2009 
1   e   1/1/2009 
1   e   1/1/2009 
2   f   2/2/2009 
2   f   2/2/2009 
2   f   2/2/2009 
3   g   3/3/2009 
3   g   3/3/2009 
+12

, je vous suggère d'écrire un! Lorsque vous trouvez que cela ne fonctionne pas, postez-le ici et quelqu'un vous aidera sans aucun doute. SO n'est pas quelque part où les gens écrivent du code gratuit pour vous. –

Répondre

0
-- note table1 is your table 

UPDATE t1 set t1.filed3 = t2.filed3 
from table1 t1, table1 t2 
where t1.filed3 is null 
and t2.filed3 is not null 
and t1.filed2 = t2.filed2 and 
t1.filed1 = t2.filed1 
bien
1

du serveur de base de données qui vous sont en utilisant? Dans Oracle, cela pourrait fonctionner, assumming filed3 est égale pour chaque ligne dans le groupe ou nul:

 
[email protected] > select * from sov; 

    FILED1 F FILED3 
     1 e 
     1 e 1/1/2009 
     1 e 1/1/2009 
     2 g 1/2/2009 
     2 g 1/2/2009 
     2 g 

[email protected] > update sov s 
    2 set 
    3  s.filed3 = 
    4   (select filed3 
    5    from sov so 
    6    where so.filed1 = s.filed1 
    7      and so.filed2 = s.filed2 
    8      and so.filed3 is not null 
    9     and rownum = 1) 
10 where filed3 is null; 

[email protected] > select * from sov; 

    FILED1 F FILED3 

     1 e 1/1/2009 
     1 e 1/1/2009 
     1 e 1/1/2009 
     2 g 1/2/2009 
     2 g 1/2/2009 
     2 g 1/2/2009