- ベストアンサー
アクセスでの総合計
アクセス2003で作業しているのですが、 わからないことがありますので教えてください。 フィールド名: 種類 金額1 金額2 A 120 500 B 300 400 C 250 450 A 300 750 というようなテーブルがあり、 種類は1列しかないのですが、金額が全部で5列あります。 この中から、Aの総合計・Bの総合計・Cの総合計とやりたいと 思っているんですが、どうすればできますでしょうか? できれば、SQLでやりたいと思っております。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
SQLでとおっしゃっていますが、とりあえずクエリを作ってその結果がOKなら、そのクエリをSQL表示させればSQL文が分かるでしょう。 クエリは、「表示」から「集計」を表示させ、「種類」で「グループ化」、他の金額欄は「合計」を指定すれば出来ます。
その他の回答 (3)
- bonaron
- ベストアンサー率64% (482/745)
単純に SELECT 種類, Sum(Nz([金額1],0) + ・・・・ + Nz([金額5],0)) AS 総合計 FROM テーブル名 GROUP BY 種類; でよろしいのでは? テーブル設計に少々問題ありではありますが。
>SQLでやりたい ・・・ウーン!具体的には??? ID 種類 金額1 金額2 1 A \100 \10 2 B \200 \20 3 C \100 \30 4 A \300 \40 種類 合計1 合計2 A \400 \50 B \200 \20 C \100 \30 SELECT 種類, Sum(金額1) AS 合計1, Sum(金額2) AS 合計2 FROM テーブル1 GROUP BY 種類; ? DBLookup("SELECT 種類, Sum(金額1) AS 合計1, Sum(金額2) AS 合計2 FROM テーブル1 GROUP BY 種類;") A;400;50;B;200;20;C;100;30; と, DBLookup関数でSQL文で種類と合計を求めることも可能! SPLIT関数で配列に取り込めば、それぞれに参照することも可。 Public Function DBLookup(ByVal strQuerySQL As String) As String On Error GoTo Err_DBLookup Dim I As Integer Dim N As Integer Dim Datas As String Dim dbs As DAO.Database Dim rst As DAO.Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset(strQuerySQL) With rst Do Until .EOF N = .Fields.Count - 1 For I = 0 To N Datas = Datas & .Fields(I) & ";" Next I .MoveNext Loop End With Exit_DBLookup: On Error Resume Next rst.Close dbs.Close DBLookup = Datas Exit Function Err_DBLookup: MsgBox Err.Description Resume Exit_DBLookup End Function
- miwaharu
- ベストアンサー率25% (29/112)
こんにちは、できないことはないですが、 横方向に集計すると、あとあと面倒です A 120 A 750 B 120 B 750 として縦に集計すると、集計する金額の個数が増えても まったく同じクエリーで集計できます。 SQLだとこんな感じです SELECT テーブル1.id, Sum(テーブル1.金額) AS 金額の合計 FROM テーブル1 GROUP BY テーブル1.id;