このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1316769778/136
#  SQLserverの質問です 
#   
#  以下のようなテーブルがあります 
#  *はユニークキーです。 
#   
#  DATE* ID1* ID2* VALUE 
#  _______________ 
#   
#  200103 AAA 111 20 
#  200103 AAA 112 10 
#  200103 AAA 113 55 
#  200103 AAA 121 60 
#  200103 AAA 122 54 
#  200103 AAA 123 44 
#  200103 BBB 111 24 
#  200103 BBB 113 43 
#  200103 BBB 114 11 
#  200103 BBB 121 11 
#  ・ 
#  ・ 
#  ・ 
#  200104 AAA 111 20 
#  200104 AAA 112 10 
#  200104 AAA 114 5 
#  200104 AAA 122 54 
#  200104 AAA 123 4 
#  200104 BBB 111 24 
#  200104 BBB 113 43 
#  200104 BBB 112 21 
#  200104 BBB 121 11 
#  200105 AAA 122 54 
#  200105 BBB 113 43 
#  200105 BBB 112 21 
#  200106 AAA 123 4 
#  200106 BBB 111 24 
#  200106 BBB 112 21 
#   
#  これをDATE=200103とDATE=200104だけとってきて 
#  いかのように外部結合したいのですがどのようにすればよいでしょうか? 
#  FULL JOINを利用したのですがうまくいきません。 
#   
#  ID1 ID2 VALUE_201103 VALUE_201104 
#  _________________________________________ 
#  AAA 111 20 20 
#  AAA 112 10 10 
#  AAA 113 55 NULL 
#  AAA 114 NULL 5 
#  AAA 121 60 NULL 
#  ・ 
#  ・ 
#  ・ 
#   
#  よろしくお願いいたします。 
# 
# 

'以下のようなテーブルがあります *はユニークキーです。 DATE* ID1* ID2* VALUE これをDATE=200103とDATE=200104だけとってきて外部結合する'(_ID1,_ID2,_VALUE_200103,_VALUE_200104) :-
        findsetof([_ID1,_ID2],(
                    テーブル(_日付,_ID1,_ID2,_),
                    '日付が200103か200104'(_日付)),
                  LL1),
        append(_,[[_ID1,_ID2]|_],LL1),
        '日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,_VALUE_200104).

'日付が200103か200104'('200103').
'日付が200103か200104'('200104').

'日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,_VALUE_200104) :-
        テーブル('200103',_ID1,_ID2,_VALUE_200103),
        テーブル('200104',_ID1,_ID2,_VALUE_200104),!.
'日付が20103か200104の適合組'(_ID1,_ID2,'NULL',_VALUE_200104) :-
        \+(テーブル('200103',_ID1,_ID2,_)),
        テーブル('200104',_ID1,_ID2,_VALUE_200104),!.
'日付が200103か200104の適合組'(_ID1,_ID2,_VALUE_200103,'NULL') :-
        テーブル('200103',_ID1,_ID2,_VALUE_2001003),
        \+(テーブル('200104',_ID1,_ID2,_)),!.