[SQLSERVER]update + case

update + case [SQLSERVER] - SQL/NoSQL - Programmation

Marsh Posté le 24-08-2010 à 14:08:18    

Bonjour :d
 
J'ai une requête comme ça:

Code :
  1. UPDATE updated_profiles
  2. SET last_updated = b.first_request
  3. ,category1 = CASE WHEN (b.category1 IS NULL) THEN a.category1 ELSE b.category1 END
  4. ,category1_perc = CASE WHEN (b.category1 IS NULL) THEN a.category1_perc ELSE b.category1_perc END
  5. ,category2 = CASE WHEN (b.category1 IS NULL) THEN a.category2 ELSE b.category2 END
  6. ,category2_perc = CASE WHEN (b.category1 IS NULL) THEN a.category2_perc ELSE b.category2_perc END
  7. ,category3 = CASE WHEN (b.category1 IS NULL) THEN a.category3 ELSE b.category3 END
  8. ,category3_perc = CASE WHEN (b.category1 IS NULL) THEN a.category3_perc ELSE b.category3_perc END
  9. ...


Déja je mets des CASE et pas des IF parce que je n'y arrive pas  [:hades113]
mais ce n'est pas trop grave. Ce qui ne m'arrange pas, c'est que le check est toujours le même.
Donc je voudrais faire un truc du genre:

Code :
  1. CASE WHEN (b.category1 IS NULL)
  2. THEN
  3. SET category1 = a.category1,
  4. category1_perc = a.category1_perc
  5. ...
  6. ELSE
  7. SET category1 = b.category1,
  8. category1_perc = b.category1_perc
  9. END


 
Est-ce possible ?

Reply

Marsh Posté le 24-08-2010 à 14:08:18   

Reply

Marsh Posté le 24-08-2010 à 14:38:02    

Non je pense pas.
Par contre tu peux faire 2 updates:

Code :
  1. UPDATE xxx
  2. SET category1 = a.category1
  3. ...
  4. WHERE b.category1 IS NULL
  5.  
  6. UPDATE xxx
  7. SET category1 = b.category1
  8. ...
  9. WHERE b.category1 IS NOT NULL


Message édité par Oliiii le 24-08-2010 à 14:38:21
Reply

Marsh Posté le 24-08-2010 à 14:56:54    

Sauf que mon FROM il fait 30 lignes :d
 
Je vais laisser comme ça alors, merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed