Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Manipulando valores negativos com sql


Você não parece obter muitas respostas - então aqui está algo se você não obtiver o 'como fazer isso em SQL puro'. Ignore esta solução se houver algo SQLish - é apenas uma codificação defensiva, não elegante.

Se você deseja obter uma soma de todos os dados com a mesma temporada, por que excluir registros duplicados - basta obtê-lo fora, executar um loop foreach, somar todos os dados com o mesmo valor de temporada, atualizar a tabela com os valores corretos e excluir entradas desnecessárias. Aqui está uma das maneiras de fazer isso (pseudocódigo):
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]