Schlechter Wortlaut, aber ich kann mir keine prägnante Beschreibung für mein Problem vorstellen.Erstellen einer Abfrage, um verschiedene Werte von einer einzelnen Spalte in eine neue Spalte zu subtrahieren
Ich habe eine Tabelle mit den folgenden Spalten:
year | month | basin_id | value
ich die Werte für alle basin_ids von einem Jahr/Monat und subtrahieren, dass die entsprechenden Werte für alle basin_ids eines anderen Jahr/Monat nehmen müssen, und speichern Sie die resultierenden Werte so, dass sie immer noch ihren jeweiligen basin_ids zugeordnet sind. Diese
scheint, wie es eine ziemlich einfache Abfrage/Unterabfrage sein sollte, und ich kann den Unterschied in den Werten berechnen ganz gut mit:
SELECT (val1.value-val2.value)
FROM value_table_1 as val1,
value_table_2 as val2
WHERE val1.basin_id=val2.basin_id
wo value_table_1 und value_table_2 sind temporäre Tabellen ich gemacht habe von allen Absonderungs Werte für Jahr1/Monat1 und Jahr2/Monat2, um meine Abfrage zu vereinfachen.
Mein Problem von hier ist, bekomme ich eine Spalte mit allen neuen Werten, aber nicht mit ihren zugehörigen Becken. Wie kann ich das erreichen? Ich schreibe dies innerhalb einer plpgsql gespeicherten Prozedur, wenn das hilft.
Say my Tabelle ist wie folgt:
year | month | basin_id | value
-----+-------+----------+-------
2017 | 04 | 123 | 10
2017 | 04 | 456 | 6
2017 | 05 | 123 | 12
2017 | 05 | 456 | 4
und ich bin die Eingänge gegeben:
year1 := 2017
month1 := 04
year2 := 2017
month2 := 05
Ich möchte die folgende Tabelle als Ergebnis erhalten:
basin_id | value
----------+------
123 | -2
456 | 2
Bearbeiten Sie Ihre Frage und geben Sie Beispieldaten und gewünschte Ergebnisse an. –