• ベストアンサー

アクセスでの総合計

アクセス2003で作業しているのですが、 わからないことがありますので教えてください。 フィールド名: 種類 金額1 金額2          A  120   500          B  300   400          C  250   450          A  300   750 というようなテーブルがあり、 種類は1列しかないのですが、金額が全部で5列あります。 この中から、Aの総合計・Bの総合計・Cの総合計とやりたいと 思っているんですが、どうすればできますでしょうか? できれば、SQLでやりたいと思っております。

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

  • ベストアンサー
noname#79209
noname#79209
回答No.4

SQLでとおっしゃっていますが、とりあえずクエリを作ってその結果がOKなら、そのクエリをSQL表示させればSQL文が分かるでしょう。 クエリは、「表示」から「集計」を表示させ、「種類」で「グループ化」、他の金額欄は「合計」を指定すれば出来ます。

その他の回答 (3)

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

単純に SELECT 種類, Sum(Nz([金額1],0) + ・・・・ + Nz([金額5],0)) AS 総合計 FROM テーブル名 GROUP BY 種類; でよろしいのでは? テーブル設計に少々問題ありではありますが。

noname#22222
noname#22222
回答No.2

>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)
回答No.1

こんにちは、できないことはないですが、 横方向に集計すると、あとあと面倒です A 120 A 750 B 120 B 750 として縦に集計すると、集計する金額の個数が増えても まったく同じクエリーで集計できます。 SQLだとこんな感じです SELECT テーブル1.id, Sum(テーブル1.金額) AS 金額の合計 FROM テーブル1 GROUP BY テーブル1.id;

関連するQ&A