1
我的預測表專賣店:POSTGRES將周列轉換爲行嗎?當前周,然後預測量的26周了
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
);
例如預測一個單一的項目,我選擇單行最近current_week_date
然後再看相對周。
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
我想與Postgres的要做到這一點,基本上是獲取一行,並調換每個星期數一排日期列和計算列:
week, count
2017-10-01,100
2017-10-08,200
2017-10-15,150
etc.
請澄清。 'asin','valid_as_of'(你的意思是'current_week_date'?)和'weekcurrent'('weekplus0'?)不在你的表格定義中。標題中的*「month」*是什麼?我伸出援手,用一個我們可以使用的「CREATE TABLE」語句替換列表。和一些語法修復。提供一些示例值和您的Postgres版本。我很確定有一個優雅的解決方案... –
@ErwinBrandstetter是的我已經將問題簡化成簡單的方法,將每週數據從列值轉換爲分隔行的更好方法是什麼。 –
那麼你有你的答案? –