- PR -

SQLで新しい列に在庫数を表示したい

1
投稿者投稿内容
SUBO
会議室デビュー日: 2008/10/02
投稿数: 2
投稿日時: 2008-10-08 18:19
お世話になります。

VB2005とSQL SERVER 2005 EXPRESSで、帳簿を
作ろうとしておりますが、下記の
様なことが出来ますでしょうか?
超初心者な私に教えてください。

下のようなテーブルがあります
******************************************
材料コード 日付    入庫  出庫
0001 2008/10/01 1000
0002 2008/10/01 2000
0001 2008/10/02 500
0002 2008/10/05 1000
******************************************

このテーブルから指定した材料コードの在庫数を
新しく列を設けて下の様にビューで表示したいのですが。

*******************************************
材料コード 日付   入庫  出庫 在庫
0001 2008/10/01 1000 1000
0001 2008/10/02 500 500
*******************************************

宜しくお願い致します。   
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-10-08 18:52
さかもとと申します。

結果の
*******************************************
材料コード 日付   入庫  出庫 在庫
0001 2008/10/01 1000 1000
0001 2008/10/02 500 500
*******************************************

についてですが、

在庫=入庫ー出庫

で良いのですよね?

SELECT 材料コード,日付,入庫,出庫,(入庫-出庫) AS 在庫 FROM 帳簿マスタ
WHERE 材料コード='0001'

でいかがでしょうか?
_________________
------------------------------------------
拝啓、さかもとと申します♪
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2008-10-08 20:06
在庫なので過去分の集計じゃないですか?

コード:
SELECT 材料コード
     , 日付
     , 入庫
     , 出庫
     , ( SELECT SUM(ISNULL(入庫,0)-ISNULL(出庫,0))
           FROM 帳簿マスタ AS V
          WHERE V.材料コード = T.材料コード
            AND V.日付       < T.日付 ) AS 在庫
  FROM 帳簿マスタ AS T
 WHERE 材料コード = '0001'


こんな感じでは?もちろん未実行です。

同一日付に複数レコードあると間違った結果になるはずで、
その場合は順序の識別に使える列がテーブル上に必要になります。

また、件数が多いとやたら遅くなりそうな気がします。
SUBO
会議室デビュー日: 2008/10/02
投稿数: 2
投稿日時: 2008-10-08 22:03
こんなに早く返答下さるなんて
ありがとうございました。
早速試させていただきます。
これからもよろしくお願い
いたします。
1

スキルアップ/キャリアアップ(JOB@IT)