Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Umgang mit negativen Werten mit sql

Sie scheinen nicht viele Antworten zu bekommen - hier ist also etwas, wenn Sie nicht die richtige Vorgehensweise in reinem SQL erhalten. Ignorieren Sie diese Lösung, wenn es etwas SQL-artiges gibt - es ist nur eine defensive Codierung, nicht elegant.

Wenn Sie eine Summe aller Daten mit derselben Saison erhalten möchten, warum sollten Sie doppelte Datensätze löschen? Holen Sie sie einfach nach draußen, führen Sie eine foreach-Schleife aus, summieren Sie alle Daten mit demselben Saisonwert, aktualisieren Sie die Tabelle mit den richtigen Werten und löschen Sie unnötige Einträge. Hier ist eine der Möglichkeiten, dies zu tun (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]