0

次のようなクライアントの銀行口座を保存するデータベースがあります。

|client|c01|c02|c03|c04|d01|d02|d03|d04|
|a     |3€ |5€ |4€ |0€ |-2€|-1€|-4€| 0€|

これは、月 3 にいるときのデータベースの構造です。 月 4 では、次のようになります。

|client|c01|c02|c03|c04|c05|d01|d02|d03|d04|d05|
|a     |3€ |5€ |4€ |2€ |0€ |-2€|-1€|-4€|-2€| 0€|

c05 と d05 に注意してください。

データベースの自動更新により、これらの列が追加されます。この列の変更により、c01、c02、c03、c04、d01、d02、d03、d04 の合計を簡単に取得できません。エラーなしでそれらの列を選択して合計するために、現在の月をチェックしてループを作成する関数を作成することを考えていました。

より良いアイデアがあれば、大歓迎です。しかし、主な問題は、可変数の列を合計できる関数を作成する方法です。

ありがとう

4

1 に答える 1

0

毎月コラムを追加することについて、私を悩ませていることがあります。選択的非正規化として有効な OLAP 戦略になり得ることは知っていますが、ここでは奇妙に感じます。ALTER TABLE通常、これらの種類のものでは、ステートメントを避ける以外の理由がなければ、全体の幅が指定されます。あなたがそこに何を保存しているのかについては、他の方法で推奨できるほど十分にはわかりませんが、完全に正規化された構造を好むと思います。

同様の試みを行った後、最善の策は動的SQLを使用することです。通常どおり、ストアド プロシージャ内にPREPAREing とEXECUTEing を配置できます。

于 2012-05-22T16:01:11.370 に答える