|  | Posted by Roy Harvey on 06/26/07 20:48 
First, SUM acts across multiple rows, but you appear to simply beadding up three columns.  After that and other changes we have
 
 UPDATE customer_tbl
 SET customer_rank = ordered2004 + ordered2005 + ordered2006
 WHERE ordered2004 + ordered2005 + ordered2006 <> customer_rank
 OR customer_rank IS NULL
 
 So it simply assigns the new value IF it is any different than the old
 one.
 
 But there may be a better way, which is not to have a customer_rank
 column at all.  It is easily derived from the other columns as needed.
 If you must have it, consider making it a computed column rather than
 a physical column.  Or it could be added to a view.  Either a computed
 column or the column in a view can be indexed, see the Books on Line
 for restrictions.
 
 Roy Harvey
 Beacon Falls, CT
 
 On Tue, 26 Jun 2007 20:33:07 -0000, azriley@gmail.com wrote:
 
 >I have inherited a database that tracks if a customer ordered a
 >product, with 1 being a yes and 0 being no. What I want to do is sum
 >those columns (customer_tbl.ordered2004, customer_tbl.ordered2005,
 >customer_tbl.ordered2006) and set the value of that sum into a column
 >in the same table (customer_tbl.customer_rank).
 >
 >Short of doing a
 >
 >  UPDATE customer_tbl
 >  SET customer_rank = 3
 >  WHERE SUM(ordered2004 + ordered2005 + ordered2006) = 3
 >
 >Is there a better way to update each row's customer_rank based on its
 >sum of ordered columns?
 >
 >Any help would be appreciated.
  Navigation: [Reply to this message] |