• ベストアンサー

Accessのクエリー 計算について

N番号をキーに容積を計算するクエリを作成しています。 それには条件があり、種別が1の場合はマイナスして計算、種別が2の場合はプラスして計算という風にしたいです。 単純にSUM関数を使用するだけではできないと思うのでやり方を教えて下さい。 条件を含めていないSQLは・・・ SELECT DISTINCTROW 種別, N番号, Sum(容積) AS 合計容積 FROM テーブル名 GROUP BY 種別, N番号; となっています。

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

  • ベストアンサー
  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

Sum(IIF([種別]=1,-[容積],[容積])) ではどうでしょうか?

okkomu
質問者

お礼

Sum関数の中で処理ができるとはおもいませんでした・・・。 勉強になりました!

その他の回答 (1)

回答No.2

GROUP BY に 種別 を入れちゃだめじゃないなかな? SELECT N番号,Sum(IIF([種別]="1",-[容積],[容積])) AS 合計容積 FROM テーブル名 GROUP BY N番号 Gin_F さんのを参考しにして上記のSQL文でどうでしょうか? 補足 下の文を FROM と GROUP BY の間につけてると特定のN番号だけの合計をだせます。 (Where N番号 = ???)

okkomu
質問者

お礼

そのとおりです! 完成しました。 ありがとうございました!

関連するQ&A

  • Access97のクエリーでのDISTINCTROW について

    Access97のクエリーでのDISTINCTROWの解読の仕方がわからず困っています。 SELECT DISTINCTROW テーブル1.番号, テーブル1.D名, テーブル1.E名, FROM テーブル1 WHERE (((テーブル1.番号) In (SELECT [番号] FROM [テーブル1] As Tmp GROUP BY [番号] HAVING Count(*)>1 ))) ORDER BY テーブル1.番号; このSQL文はどういう条件のデータを選択する意味なのでしょうか。 教えてください。

  • アクセス:クロス集計の抽出条件

    添付のようなテーブルがあり下記のSQLを実行するとクエリ1になるのですが、合計数に抽出条件を入れてクエリ2のように10個以下のものは表示しないようしたいと思います。 下記SQLをどのように直したらよいでしょうか。一つのクエリで行う方法を教えて下さい。 TRANSFORM Sum([テーブル1].個数) AS 個数の合計 SELECT [テーブル1].[くだもの], Sum([テーブル1].個数) AS 合計 FROM テーブル1 GROUP BY [テーブル1].[くだもの] PIVOT [テーブル1].月;

  • Accessの選択クエリで

    アクセス2003で選択クエリでGROUP BYを使ったSQLを書きたいのですが、 count部は表示させなくて、グループのみ表示させる方法はありますか? SELECT NAME, COUNT(NAME) FROM CLASS_A GROUP BY NAME; CLASS_AというテーブルにあるNAMEの一覧を取得したいです。 グループを使った場合と、グループを使わない場合の両方について教えて欲しいです。

  • ユニオンクエリでWHERE句を使うのは不可能でしょうか?

    アクセス2003です。 (select * from Q1) UNION ALL (select * from Q2) UNION ALL (select * from Q3); WHERE (((番号) Like "*001")); としても 「SQLステートメントの後に文字が見つかりました。」 となってしまいます。 「番号」と言うフィールドは Q1、Q2、Q3どのクエリにもあり (select * from Q1) UNION ALL (select * from Q2) UNION ALL (select * from Q3); のみなら正常に動作します。 作成したユニオンクエリで「フィルタの対象」で「*001」と入力したらちゃんと思い通りに動作します。 ユニオンクエリで条件抽出は不可能でしょうか? よろしくお願いします。

  • SQLのクエリで教えてほしいです。

    SQLのクエリで教えてほしいです。 ある列のTOP10を出してグラフを作成したいと考えております。 また、そのTOP10の行をカウントして何件あるかを知りたいのですが なかなか思うように動きません。 以下クエリを作ったのですが、結果に16行の結果(Top16?) になってしまいます。 また、一つのSQLで、Countも含めたいと思ってますが、こういった場合 はどこに記述すればいいのでしょうか。 select TOP (10) Percent hoge from hogehoge group by hoge order by hoge ご存知の方、よろしくお願い致します。

  • 抽出クエリについて

    <環境> SQL Server 2005 クエリについて教えてください。 下記の<TBL>から<SQL1>を実行し直近の収納日を取得します。(☆印のデータ) <SQL1> SELECT 個人番号, Max(収納日) FROM TBL GROUP BY 個人番号 この時、<SQL1>で取得したレコードの"年月"、"区分"フィールドの値を取得するには どうすればよいでしょうか? LOOPで取得するのではなく、1本のSQL文で取得できないかと思っています。 どなたかご教授お願いします。 <TBL> 個人番号  年月    収納日   区分 00000001  2009/04  2009/04/01  1 00000001  2009/05  2009/05/01  2 00000001  2009/06  2009/06/01  3 ☆ 00000002  2009/04  2009/04/01  4 00000002  2009/05  2009/05/01  5 00000002  2009/06  2009/06/01  6 00000002  2009/07  2009/07/01  7 ☆

  • Accessのクエリについて教えてください。

    クエリで顧客名を入力するとその人のデータが表示されるようにしたいのですが、購入履歴がない人は表示されません。購入履歴のない人も全て表示させる方法を教えていただけますか? ちなみにSQLはこういう感じです。よろしくお願いします。 SELECT 顧客マスター.顧客ID, 顧客マスター.氏名, Sum(販売.販売額) AS 販売合計 FROM 顧客マスター INNER JOIN 販売 ON 顧客マスター.顧客ID = 販売.顧客ID GROUP BY 顧客マスター.顧客ID, 顧客マスター.氏名 HAVING (((顧客マスター.氏名) Like [顧客名字を入力してください] & "*"));

  • このぐるぐるSQLクエリまとまりますか?

    ピボット集計の理解が難しくて難儀してます このような予定表を作るのですが毎月ごとに集計してやるのに 4回問い合わせております。一回でえいやっと投げるにはどう記述しましょう? mysql 5.0です -- 今月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW(), '%Y%m') group by 商品番号; -- 来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 1 MONTH, '%Y%m') group by 商品番号; -- 再来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 2 MONTH, '%Y%m') group by 商品番号; -- ささらい月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 3 MONTH, '%Y%m') group by 商品番号;

  • Accessのクエリで会費を計算させたいのですが

    会員テーブルの会員種別をみて会費を割引いた額を求めようとしています。(会費から期間で割引く) ID  会員種別 会員期間  会費  1    A    5   300円  2    B    4   400円  3    C    3   500円  4    D    3   600円  5    A    3   300円 ID1の場合は種別がAなので会費300円で、 300円-300円*5%(5は会員期間) ID2の場合は種別がBなので会費400円で、 400円-400円*4%(4は会員期間) という感じで、種別ごとに固定額があり期間に応じて 割引という計算をさせたいのです。種別は4種類で 今後計算を見直す可能性があります。 EXCELならIF文で書いてしまうところですが、 可能ならばSQLで書かずに式ビルドの記述で 対応したいので、よろしくご教授ください。

  • SQL、2つのSQLを1つで表現するには?

    <<<<クエリ8>>>> SELECT book.author, book.bookname, book.money*daityou.cnt AS 式1 FROM book, daityou WHERE (((book.bookname)=[daityou].[bookname])); <<<<クエリ9>>>> SELECT クエリ8.author,sum(Expr1002) from クエリ8 group by author; として、ひとつのSQL文にするにはどうすればいいですか? よろしくお願いします。