Titre mal rédigé, mais je ne peux pas trouver une façon succincte de décrire mon problème.Création d'une requête pour soustraire des valeurs différentes d'une seule colonne dans une nouvelle colonne
J'ai une table avec les colonnes suivantes:
year | month | basin_id | value
Je dois prendre les valeurs pour tous les basin_ids d'un an/mois et soustraire les valeurs correspondantes pour tous les basin_ids d'une autre année/mois, et stocker les valeurs résultantes de telle sorte qu'elles sont toujours associées à leur basin_ids respectif.
Cela semble qu'il devrait être une question assez simple/sous-requête, et je peux calculer la différence des valeurs très bien avec:
SELECT (val1.value-val2.value)
FROM value_table_1 as val1,
value_table_2 as val2
WHERE val1.basin_id=val2.basin_id
où value_table_1 et value_table_2 sont des tables temporaires que j'ai fait par tous les séparer Les valeurs associées à year1/month1 et year2/month2 dans le but de simplifier ma requête.
Mon problème ici est que j'obtiens une colonne avec toutes les nouvelles valeurs, mais pas avec leurs bassins associés. Comment puis-je atteindre cet objectif? J'écris ceci dans une procédure stockée de plpgsql, si cela aide.
Dites ma table est la suivante:
year | month | basin_id | value
-----+-------+----------+-------
2017 | 04 | 123 | 10
2017 | 04 | 456 | 6
2017 | 05 | 123 | 12
2017 | 05 | 456 | 4
et je me donne les entrées:
year1 := 2017
month1 := 04
year2 := 2017
month2 := 05
Je veux obtenir le tableau suivant à la suite:
basin_id | value
----------+------
123 | -2
456 | 2
Modifiez votre question et fournissez des exemples de données et les résultats souhaités. –