0
私は次のような簡単なテーブルを持っています。 40,000個のアイテム:SAP Hana - SQL - 再帰関数なしで同じテーブルの列を計算する
|date|consum|
この表に基づいて、いくつかの新しい列を計算します。最後には、テーブルがどのように見えるはずです。残念ながら、SAPハナデータベースは、再帰テーブル・ステートメントをサポートしていません
|date|consum|row|row_relativ|min|max|upper|lower|
...ここ
は、計算ルールは以下のとおりです。
- 行=
row_number() over(order by dates)
- row_relative =
- 分=
floor(row_relative)
- 最大=
ceil(row_relative)
- 最小=最小値と列からは消耗品を選択
- 最大=私が記憶されているprecedureを有する瞬間最大値
row*35040/32768
と列からは消耗品を選択します5つの変数。各変数では、私は新たな変数を計算します。それは非常に汚いです...どうすれば違うのですか?それは非常にある、あなたはところで、あなたのSQLScript で次のCTE共通テーブル式を使用することができます)=楽しさを持っている...ここで/
私のSQLスニペットです
var1 = select *, row_number() over(order by dates) as row from XYZ order by dates limit 34944;
var2 = select *, (row * 34944/32768) as row_relative from :var1;
var3 = select *, floor(row_relative) as min, ceil(row_relative) as max from :var2;
var4 = select
p.*,
(select consumfrom :var3 where row = p.min) as lower,
(select consumfrom :var3 where row = p.max) as upper
from :var3 p;
var5 = select
p.*,
(p.lower* (1-p.row_relative+p.min)+p.upper * (p.row_relativ - p.min)) as new_consum
from :var4 p;
HANA CTEは、SQL ServerのCTEの構文と一致した理由は驚きではありません興味深いです。共通テーブル式の構文はSQL標準で定義されているため、「SQL Server」では定義されていないため(マイクロソフトでは標準を無視していました)それらは** Microsoftが発明した**ものではありません**。そして、他のDBMSは、Microsoftがそれらを追加することを考えようとずっと前から –