このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1316769778/332
#  oracleです。 
#   
#  ・テーブルデータ 
#  テーブルA 
#   ID |日付 
#   100|10/1 
#   100|10/2 
#    100|10/5 
#   101|11/1 
#   102|11/1 
#   102|11/2 
#   103|12/1 
#   
#   
#  テーブルB 
#   ID |期間(自)|期間(至) 
#   100|10/1  |10/4 
#   101|10/1  |10/30 
#   102|11/1  |11/5 
#   103|12/1  |12/1 
#    
#   
#  ・欲しい結果 
#   
#   ID |期間内のカウント 
#   100|2 
#   101|0 
#   102|2 
#   103|1 
#    
#   
#  ・説明: 
#  IDをキーに、期間内のIDごとのカウントをとりたいです。 
#  SQL1本で取得する方法はありますでしょうか? 
#  列は増やしたくないです。 
#   

テーブルA(100,10/1).
テーブルA(100,10/2).
テーブルA(100,10/5).
テーブルA(101,11/1).
テーブルA(102,11/1).
テーブルA(102,11/2).
テーブルA(103,12/1).
   
テーブルB(100,10/1,10/4).
テーブルB(101,10/1,10/30).
テーブルB(102,11/1,11/5).
テーブルB(103,12/1,12/1).

'IDをキーに、期間内のIDごとのカウントをとりたい'(_ID,_期間_自,_期間_至,_度数) :-
        findsetof([_ID,_期間_自,_期間_至],(
                    テーブルB(_ID,_期間_自,_期間_至)),
                LL1),
        append(_,[[_ID,_期間_自,_期間_至]|_],LL1),
        count((
                    テーブルA(_ID,_日付),
                    _日付 @>= _期間_自,
                    _日付 @=< _期間_至),
                _度数).