• ベストアンサー

絶対値ごとに集計したい

MS Access2000を使っています。 クロス集計のウイザードで、 ある製品の性能別数量を出しています。 性能ごとに、個数があるレコードが複数個あって、 その性能ごとに個数を合計しています。 この『性能』は、数値で-30から、+30まであって、 個別に数を数えているのですが、 クロス集計時には、-30と+30を同じ物として集計したい、 全ての性能数値の絶対値を同じ物として集計したいという 要求があるのですが、どのようにすれば実現するのか判りません。 -5     1 -4     2 -3     3 -2      2 -1     1 0     2 1     2 2     4 3      3 4      2 5     1 を 5     2 4     4 3     6 2      6 1     3 0     2 としたいのです。 どなたかご教授ください。 よろしくお願いします。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

SELECT Abs(Data1) , Sum(Table1.data2) FROM Table1 GROUP BY Abs(Data1) ORDER BY Abs(Data1) DESC;

KAZUMI2003
質問者

お礼

ストレートなご指摘ありがとうございます。 参考になりました。

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>全ての性能数値の絶対値を同じ物として集計したい これに関しては何ら問題ないのでは 性能の絶対値を算出する式フィールドを作るだけです それよりクロス集計するにはフィールド数が足りないですね テーブルから性能の絶対値と行見出しようの常数フィールドを持つクエリを作り そのクエリをクロス集計クエリに変えて 常数フィールド:行見出し 式フィールド:列見出し 個数合計とします 結果 絶対値  0  1  2  3  4  5 個数    2  3  6  6  4  2 SQLは TRANSFORM Sum(kazum.個数) AS 個数の合計 SELECT "個数" AS 絶対値 FROM kazum GROUP BY "個数" PIVOT Abs([性能]);

KAZUMI2003
質問者

お礼

詳しい解説ありがとうございます。参考になりました。SQLビューで直接ABS関数を使いました。

  • frogeye
  • ベストアンサー率47% (11/23)
回答No.1

ウィザードをつかったことが無いのではずしているかもしれませんが。 Accessでは「ABS関数」が使えるはずです。 対象フィールドを「ABS([性能])」としてあげれば絶対値が取れると思います。 ウィザードでできたクエリのデザインかSQLのビューで変更できると思います。 これをグループ化してあげれば集計できると思います。

KAZUMI2003
質問者

お礼

abs関数がSQLで使える事を知りませんでした。 ありがとうございました。 良回答は他の方に付けましたが、こちらの回答もとても参考になりました。

関連するQ&A