は私が毎日のためにそれぞれの名前の値が含まれています。このはネティーザ/ Postgresの
Date Name Value
----------------------------
2015-01-01 A 12
2015-01-01 B 13
2015-01-01 C 10
2015-01-01 D 9
2015-01-01 E 15
2015-01-01 F 11
2015-01-02 A 1
2015-01-02 B 2
2015-01-02 C 3
2015-01-02 D 4
2015-01-02 E 5
2015-01-02 F 6
2015-01-03 A 7
2015-01-03 B 8
2015-01-03 C 9
2015-01-03 D 10
2015-01-03 E 15
2015-01-03 F 16
....
のように見えるテーブルAを持って一列に複数の列に複数の行を結合します。私はすべての日付が正しくに表Aに、JOINのいくつかの種類を使用していた、その後
Date Name ValueDate ValueDate+1 ValueDate+2
----------------------------------------------------------------
2015-01-01 A 2015-01-01 2015-01-02 2015-01-03
2015-01-01 B 2015-01-01 2015-01-02 2015-01-03
2015-01-01 C 2015-01-01 2015-01-02 2015-01-03
2015-01-01 D 2015-01-01 2015-01-02 2015-01-03
2015-01-01 E 2015-01-01 2015-01-02 2015-01-03
2015-01-01 F 2015-01-01 2015-01-02 2015-01-03
...
私の考えに入った中間テーブルを作成しようとしたこの
Date Name ValueDate ValueDate+1 ValueDate+2
--------------------------------------------------------------
2015-01-01 A 12 1 7
2015-01-01 B 13 2 8
2015-01-01 C 10 3 9
2015-01-01 D 9 4 10
2015-01-01 E 15 5 15
2015-01-01 F 11 6 16
2015-01-02 A 1 7 ...
2015-01-02 B 2 8 ...
2015-01-02 C 3 9 ...
2015-01-02 D 4 10 ...
2015-01-02 E 5 15 ...
2015-01-02 F 6 16 ...
のように見える第二のテーブルを必要とします私は、これはSQLで行うことができる方法を見つけ出すのに苦労していた日付に対応した値をマッピングし、
CASE WHEN Date = ValueDate THEN Value ELSE NULL END AS ValueDate+1
ようs.th使用しています。私は基本的に、最初の日付シーケンスのためにすべての値をウィンドウ上に必要とします。いくつかの背景を与えるために、定期的な時間間隔の間、値が次のx日間にどのように挙動するかを見たいと思う。データ型は、すべての日付列の日付、値の名前と数値のVarcharです。 ValueDate + 1と+2は+1/2日を意味します。また、名前の数は時間の経過とともに一定に留まることも否定できない。
あなただけlead()
をしたいのおかげ
私には、これは2つの左の結合とピボットです。あなたの[netezzaのバージョン](http://www-01.ibm.com/support/docview.wss?uid=swg21669899)が 'pivoting'をサポートしていると仮定すると、動的SQLを使用して日付名を生成する必要があります特に列の数が可変である場合は列ヘッダー。 – xQbert