このディレクトリの索引
このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/12
#  以下のようなテーブルがあるとします。 
#  [テーブル名:経費TBL] 
#  会社 , 部署 , 年度 , 月 , 経費 
#  ------------------------------- 
#  AAA , AAA01 , 2009 , 1 , 10000 
#  AAA , AAA01 , 2009 , 1 , 20000 
#  AAA , AAA01 , 2009 , 2 , 30000 
#  AAA , AAA01 , 2009 , 3 , 40000 
#  BBB , AAA01 , 2009 , 4 , 50000 
#  BBB , AAA01 , 2010 , 1 , 60000 
#  CCC , AAA01 , 2010 , 1 , 70000 
#  CCC , AAA01 , 2010 , 1 , 80000 
#   
#  ここから以下のような、 
#  会社別、部署別の集計データを作成したいとします。 
#  会社 , 部署 , 200901経費計 , 200902経費計 , … , 201012経費計 
#   
#  この時、経費計列の条件指定はどうしたら良いのでしょうか? 
# 
# 

'会社別、部署別の集計データを作成したいとします。 会社 , 部署 , 200901経費計 , 200902経費計 , … , 2010122経費計 ' :-
        見出し表示,
        findsetof([_会社,_部署],経費TBL(_会社,_部署,_,_,_),L1),
        append(_,[[_会社,_部署]]|R],L1),
        findall(_経費計,(
                    年度・月の生成(_年度,_月),
                    findsum(_経費,(
                                       経費TBL(_会社,_部署,_年度,_月,_経費)),
                            _経費計)),
                _経費ならび),
        concat_atom(_経費ならび,',',_経費月別表示),
        write_formatted('%t,%t,%t\n',[_会社,_部署,_経費月別表示]),
        R = [].

年度・月の生成(2009,_月) :-
        for(1,_月,12).
年度・月の生成(2010,_月) :-
        for(1,_月,12).

見出し表示 :-
        write(' 会社 , 部署 '),
        年度の生成(_年,_月),
        write_formatted_atom(S,', %4d%02d経費計 ',[_年,_月]),
        write(S),
        fail.
見出し表示 :-
        nl.