• ベストアンサー

sql2005ストアド計算式で金額1*数量1,金額2*数量2などの時に

sql2005ストアド計算式で金額1*数量1,金額2*数量2などの時に、金額・数量の後ろを変数にして繰り返し処理する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

あるテーブル「テーブル1」に数量1,金額1,数量2,金額2,....,数量10,金額10まで項目があるとして、 それらの数量a×金額aの合計を求めたいとすれば、こんな感じになります。 DECLARE @sql varchar(MAX) DECLARE @i int SET @i=1 WHILE (@i<=10) BEGIN SET @sql = ISNULL(@sql+'+','')+'数量'+CONVERT(varchar,@i)+'*金額'+CONVERT(varchar,@i) SET @i=@i+1 END SET @sql='SELECT '+@sql+' FROM テーブル1' EXEC (@sql) まあ、もしこのようなテーブルが本当にあるとしたら、全く正規化されていないテーブルってことですけど。

kirin4247
質問者

お礼

ありがとうございます。 繰り返し処理が出来て楽になります。

関連するQ&A

  • SQLストアドについて

    SQL超初心者です。 ストアド内でテーブル名を可変にしたいのですが以下のようなエラーメッセージが表示され でません。どなたか教えていただけませんか? <エラーメッセージ> テーブル変数 "@AA" を宣言してください。 ◆環境  sql Sever 2005 ◆コードは以下の通りです。 DECLARE @AA VARCHAR(50) DECLARE @HANTEI CHAR(5) DECLARE @FETCHTABLE1 CHAR(22) DECLARE @FETCHTABLE2 CHAR(22) SET @HANTEI = 'ABCDEF' SET @FETCHTABLE1 = 'DBO.USV_YOSAN' SET @FETCHTABLE2 = 'DBO.USV_JISEKI' BEGIN IF @HANTEI = 'ABCEDF' SET @AA= @FETCHTABLE2 SELECT * FROM @AA PRINT @AA END 以上 よろしくお願いいたします。

  • ストアドを使う場合

    お世話になります。 ストアドをどういったときに使用したらいいか分かりません。 ストアドを使うとネットワークの負荷を軽減できるというのは 分かるのですが、単純に1テーブルを参照する場合は ストアドでなくてもそれほど変わらない? 複数にリンクがある場合に使用するべきなのですか? それともトータル値を取得したり計算を行わせたりする場合 に使用するべきなのでしょうか? 例えばVBにADOなどで直接SQL文を書くのと ストアドを呼ぶのでは 何を基準に直接SQLをよんでいいのか、ストアドを呼んだ方がいいのか 基準となる考え方がわかりません。 質問文が分かりずらかったらすみません。 お分かりになる方ご回答お願いします。

  • MYSQLでストアドプロシージャの引数を二つ

    MYSQL初心者で参考書にかじりついてプログラミングしています。 主にDBの内容をPHPで吐き出させるといった使い方をしています。 SQL文があまりにも長ったらしくなってきたのでストアドプロシージャを使いたいのですが、使っているSQL文が (SELECT * FROM .変数. WHERE .変数. LIKE '.変数.') UNION (SELECT * FROM .変数. WHERE .変数. LIKE '.変数.'); となっており、引数を複数使えないとスッキリさせられない状況です。 ストアドプロシージャで複数の引数を設定することはできないのでしょうか?

    • ベストアンサー
    • MySQL
  • SQLの数値の編集について

    SQLで金額や数量を抽出するのにカンマ編集をしています。(→to_char(SURYO, '99,999') 金額や数量が0の時、空白をかえす方法はないでしょうか? どんな方法でもいいのですが、できればdecodeを使いたくありません。(やや複雑なSQLのため(^^;) 困っています。できるだけいそぎで、なにか方法を知っている方、アドバイスお願いします。

  • Sqlsever2005 T-SQL ストアドを変更するクエリの実行

    Sqlsever2005 T-SQL ストアドを変更するクエリの実行 お世話になります。 バッチで既存のストアドを変更したり、新規ストアドを作成する予定です。 エンタープライズマネージャーを使っているのですが、 ストアドを変更するクエリを保存すると拡張子.sqlとなり、 ローカルフォルダに保存されます。 ローカルにある.sqlを指定して実行する方法を教えていただけますでしょうか? ストアドと同じEXECを使えるのでしょうか?その際、ローカルのパスを指定するのがよくわかりません。 ヘルプをみるとだめそうな感じが。 または全く違う方法がありますでしょうか? 情報が不足しておりましたらご指摘くださいませ。 初心者な質問ですいませんが、宜しくお願い致します。。

  • ASPからSQL Server2000のストアドプロシージャーを利用したいのですが。。

    ASPからSQL Server2000のストアドプロシージャーを 利用したいのですが、記述の方法どのようにすれば いいのでしょうか? ストアドプロシージャーの結果をレコードセットと して、ASPの中で使用したいのですが。。。

  • SQL サーバーのストアドをAccessのクエリーに変換

    SQL Server 7.0 のストアドプロシージャーをAccess2000のクエリーに 簡単に変換する方法を教えてください。

  • 金額を自動計算させたい

    単価テキストボックス、数量テキストボックス、金額テキストボックスを表示して、単価と数量にデータを入力したら金額に自動で計算結果を表示させたいのですが、良い方法はありますか? よろしくお願いします。

  • SQL2005 ストアドUPDATEについて教えてください。

    SQL2005 ストアドUPDATEについて教えてください。 顧客マスタと、売上データがあり、顧客毎の売上データの売上金額の合計を 顧客マスタの累計金額にUPDATEする方法を教えてください。 顧客マスタ・・顧客コード、累計金額 売上データ・・売上日、顧客コード、売上金額 update 顧客マスタ set 累計金額=(select sum(B.売上金額) from 売データ as B where 売上日付>='2010/03/01' and 売上日付<='2010/06/30' group by B.顧客コード) from 顧客マスタ as A,売上データ as B where A.顧客コード=B.顧客コード サブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や のエラーが出たり、期間中のすべての顧客の売上合計がセットされたり思うようになりません。 どなたか教えてください。 宜しくお願いします。

  • ストアドでのレコード処理

    ストアドの中でSELECT文を発行してその出力結果を元に次のSQL文を作成したいと思っています。そこでSQL文の出力結果をACCESSから呼んだ時の様にRECORD SETの処理の様な記述をしたいと思っています。そこでストアドの中で『SELECT [項目] from XXXX』の [項目]を参照するにはどの様な記述をすればいいのでしょうか。宜しくお願い致します。