Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Gérer les valeurs négatives avec sql

Vous ne semblez pas obtenir beaucoup de réponses - alors voici quelque chose si vous n'obtenez pas le bon "comment le faire en SQL pur". Ignorez cette solution s'il y a quelque chose de SQLish - c'est juste un codage défensif, pas élégant.

Si vous voulez obtenir une somme de toutes les données avec la même saison, pourquoi supprimer les enregistrements en double - sortez-les simplement, exécutez une boucle foreach, additionnez toutes les données avec la même valeur de saison, mettez à jour la table avec les bonnes valeurs et supprimez les entrées inutiles. Voici l'une des façons de le faire (pseudocode):

productsArray = SELECT * FROM products
processed = array (associative)
foreach product in productsArray:
  if product[season] not in processed:
    processed[season] = product[quantity]
    UPDATE products SET quantity = processed[season] WHERE id = product[id]
  else:
    processed[season] = processed[season] + product[quantity]
    DELETE FROM products WHERE id = product[id]