Meine Prognose Tabelle speichert die aktuelle Woche, und dann für 26 Wochen prognostizierten Beträge aus:POSTGRES transponiert Wochenspalten in Zeilen?
CREATE TABLE forecast_listings (
product integer NOT NULL
, current_week_date date
, weekplus0 integer NOT NULL DEFAULT 0
, weekplus1 integer NOT NULL DEFAULT 0
, weekplus2 integer NOT NULL DEFAULT 0
, weekplus3 integer NOT NULL DEFAULT 0
, weekplus4 integer NOT NULL DEFAULT 0
-- etc
, weekplus24 integer NOT NULL DEFAULT 0
, weekplus25 integer NOT NULL DEFAULT 0
);
Zum Beispiel ein einzelnes Element prognostiziert, wähle ich eine einzelne Zeile mit der neuesten current_week_date
und dann bei relativ Wochen aussehen.
SELECT
unnest(
array[
to_char(week_current_date, 'YYYY-MM-DD'),
to_char(week_current_date + interval '1 weeks', 'YYYY-MM-DD'),
to_char(week_current_date + interval '2 weeks', 'YYYY-MM-DD'),
to_char(week_current_date + interval '3 weeks', 'YYYY-MM-DD'),
to_char(week_current_date + interval '4 weeks', 'YYYY-MM-DD')
-- ...all the way to 25
]
) AS "Week",
unnest(
array[
weekplus0,
weekplus1,
weekplus2,
weekplus3,
weekplus4
-- ...all the way to 25
]
) AS "Count"
FROM (
SELECT * FROM forecast_listings
WHERE product_id = 1
ORDER BY week_current_date DESC
LIMIT 1
) as row
Ich mag würde dies mit Postgres zu tun, im Wesentlichen eine Reihe und zur Umsetzung der einzelnen Wochen Zahl in eine Reihe mit einer Datumsspalte holen und zählen Spalte:
week, count
2017-10-01,100
2017-10-08,200
2017-10-15,150
etc.
Bitte klären. 'asin',' valid_as_of' (du meinst 'current_week_date'?) und' weekcurrent' ('weekplus0'?) sind nicht in deiner Tabellendefinition. Und was ist mit dem * "Monat" * im Titel? Ich half mit und ersetzte die Liste der Spalten durch eine 'CREATE TABLE'-Anweisung, mit der wir arbeiten können. Und einige Syntax-Fixes. Geben Sie einige Beispielwerte und Ihre Version von Postgres an. Ich bin mir ziemlich sicher, dass es eine elegante Lösung gibt ... –
@ErwinBrandstetter Ja, ich habe die Frage auf eine einfache Frage reduziert, was eine bessere Möglichkeit ist, diese wöchentlichen Daten aus Spaltenwerten in getrennte Zeilen zu transponieren. –
Also hast du deine Antwort? –