Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Access 2016)
集計クエリ
投稿日時: 19/07/11 14:18:55
投稿者: kazz

お世話になります。
下記のテーブルがあります(主キーは科目と内訳)
レコードの2行目、4行目、5行目は科目と内訳は異なりますが、
銀行番号、支店番号、預金種目、口座番号は同じです。
この4つのフィールドをキーに金額を合計し、
且つ、科目と内訳を昇順に表示させるクエリまたはSQLが
ありましたら教えていただけませんでしょうか。
 
4行目と5行目のレコードが2行目に加算されるようなイメージです
 
よろしくお願いいたします
 
科目 内訳 銀行番号 支店番号 預金種目 口座番号 金額
402  0001     1    100     1    1234567 10,000
402  0002     2    200     1    7654321 20,000
402  0003     5     50     2    1111111 30,000
403  0001      2    200     1    7654321 50,000
403  0010     2    200     1    7654321 15,000
 
結果
科目 内訳 銀行番号 支店番号 預金種目 口座番号 金額
402 0001     1    100     1    1234567 10,000
402 0002     2    200     1    7654321 85,000←
402 0003     5    50     2    1111111 30,000

回答
投稿日時: 19/07/11 16:17:03
投稿者: sk

引用:
主キーは科目と内訳

引用:
銀行番号、支店番号、預金種目、口座番号

引用:
この4つのフィールドをキーに金額を合計し、
且つ、科目と内訳を昇順に表示させるクエリまたはSQL

( SQL ビュー)
----------------------------------------------------------------------
SELECT [テーブル名].[科目], 
       [テーブル名].[内訳], 
       [テーブル名].[銀行番号], 
       [テーブル名].[支店番号], 
       [テーブル名].[預金種目], 
       [テーブル名].[口座番号] 
       (SELECT Sum(tmp.[金額]) 
        FROM [テーブル名] tmp 
        WHERE tmp.[銀行番号] = [テーブル名].[銀行番号] 
          AND tmp.[支店番号] = [テーブル名].[支店番号] 
          AND tmp.[預金種目] = [テーブル名].[預金種目] 
          AND tmp.[口座番号] = [テーブル名].[口座番号]) AS [金額] 
FROM [テーブル名] 
WHERE NOT EXISTS (SELECT tmp.* 
                  FROM [テーブル名] tmp 
                  WHERE tmp.[銀行番号] = [テーブル名].[銀行番号] 
                    AND tmp.[支店番号] = [テーブル名].[支店番号] 
                    AND tmp.[預金種目] = [テーブル名].[預金種目] 
                    AND tmp.[口座番号] = [テーブル名].[口座番号] 
                    AND (   (tmp.[科目] < [テーブル名].[科目])
                         OR (    tmp.[科目] = [テーブル名].[科目]
                             AND tmp.[内訳] < [テーブル名].[内訳])))
ORDER BY [テーブル名].[科目], 
         [テーブル名].[内訳];
----------------------------------------------------------------------
(テーブル名は適宜修正すること)
 
以上のような感じでしょうか。

回答
投稿日時: 19/07/11 21:39:33
投稿者: mayu.

引用:
この4つのフィールドをキーに金額を合計し、
且つ、科目と内訳を昇順に表示させるクエリまたはSQL

以下のSQLでもご希望の結果になるでしょう。
 
SELECT CLng( 
           Left$( Min( Format$( x.科目, String$( 10, '0' ) ) & x.内訳 )
                , 10
           ) 
       ) As 科目
     , Mid$( 
             Min( Format$( x.科目, String$( 10, '0' ) ) & x.内訳 )
           , 11
       ) As 内訳
     , 銀行番号
     , 支店番号
     , 預金種目
     , 口座番号
     , Sum( x.金額 ) As 金額
FROM テーブル名 x
GROUP BY 銀行番号
       , 支店番号
       , 預金種目
       , 口座番号
ORDER BY 1, 2 ;

回答
投稿日時: 19/07/12 20:10:06
投稿者: jung

こんなのも
 
SELECT
       First(科目)
     , First(内訳)
     , 銀行番号
     , 支店番号
     , 預金種目
     , 口座番号
     , Sum(金額)
FROM テーブル名
GROUP BY 銀行番号
       , 支店番号
       , 預金種目
       , 口座番号
ORDER BY 科目, 内訳,銀行番号, 支店番号, 預金種目, 口座番号;

トピックに返信