このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/205
#  MS SQL server 2012です。 
#  TableA 
#  商品名 製造数 
#  A 1000 
#  B 2000 
#  C 1000 
#   
#  TableB 
#  商品名 単価 
#  A 100 
#  A 120 
#  B 90 
#  C 120 
#  C 125 
#   
#  TableBには同一商品名で複数の単価が登録されています。 
#  TableBの商品名毎の一番高い単価を基にして 
#  TableAの製造数 x 単価を求めたいのですが 
#  一発で出す方法有りましたら教えてください。 
#   
#  得たい結果 
#  A 12000 
#  B 18000 
#  C 12500 
# 
# 

'TableBには同一商品名で複数の単価が登録されています。 TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(_商品名,_金額) :-
        setof(_商品名,[_商品名,_単価] ^ (
                    テーブルB(_商品名,_単価)),_商品名ならび),
        'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(_商品名ならび,_商品名,_金額).

'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'([_商品名|R1],_商品名,_金額) :-
        findmax(_単価,(
                    テーブルB(_商品名,_単価)),
                _一番高い単価),
        テーブルA(_商品名,_製造数),
        _金額 is _一番高い単価 * _製造数.
'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'([_|R1],_商品名,_金額) :-
        'TableBの商品名毎の一番高い単価を基にしてTableAの製造数 x 単価を求める'(R1,_商品名,_金額).