アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

としたいのです。
どなたかご教授ください。
よろしくお願いします。

A 回答 (3件)

SELECT Abs(Data1) , Sum(Table1.data2) FROM Table1


GROUP BY Abs(Data1)
ORDER BY Abs(Data1) DESC;
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/12 18:31

>全ての性能数値の絶対値を同じ物として集計したい


これに関しては何ら問題ないのでは
性能の絶対値を算出する式フィールドを作るだけです

それよりクロス集計するにはフィールド数が足りないですね
テーブルから性能の絶対値と行見出しようの常数フィールドを持つクエリを作り
そのクエリをクロス集計クエリに変えて

常数フィールド:行見出し
式フィールド:列見出し
個数合計とします

結果

絶対値  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([性能]);
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/12 18:34

ウィザードをつかったことが無いのではずしているかもしれませんが。



Accessでは「ABS関数」が使えるはずです。

対象フィールドを「ABS([性能])」としてあげれば絶対値が取れると思います。
ウィザードでできたクエリのデザインかSQLのビューで変更できると思います。

これをグループ化してあげれば集計できると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/12 18:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す