- 締切済み
PostgresSQLで自動計算
棚, 部品, 在庫 ------------------ 1-1 A 300 1-2 A 200 1-3 A 100 1-4 B 100 1-5 B 50 上記のような、部品の保管場所、在庫を管理しているテーブルに対し、 在庫が少ない部品から優先して引当数を自動計算したいのですが、 SQLで実現可能でしょうか。 なお、使用しているDBはpostgres 8.4です。 例として、部品Aの引当総数が550個だとすると、 SQL のSELECT文で、 棚, 部品, 在庫, 引当数 ----------------------------- 1-1 A 300 250 1-2 A 200 200 1-3 A 100 100 1-4 B 100 0 1-5 B 50 0 のような結果が抽出できれば理想的です。 引当条件としては、 (1)在庫が少ないものから、優先的に (2)在庫を超える引当は不可 です。 ご教授の程、よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
お礼
ご教授ありがとうございます。 PostgreSQL8.4にて本SQLを実行したところ、分析関数「rows between unbounded preceding and 1 preceding」の'1'のところでエラーとなりました。 PostgreSQL8.4でサポートしているオプションは以下だけのようです。。 --------------------------------------- (1)RANGE UNBOUNDED PRECEDING (2)RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW (3)RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING (4)ROWS UNBOUNDED PRECEDING (5)ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW (6)ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING --------------------------------------- http://www.postgresql.jp/document/8.4/html/sql-expressions.html 1行前までの累計在庫を取得するために(5)を採用して、 (該当行までの累計在庫 - 該当行の在庫)を 計算してSQLを組みなおしてみます。 たいへん参考なりました。 もう少し考えてみます。