このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1316769778/249
#  ・MySQL5です 
#  ・テーブルデータ 
#   ID|名前|データ 
#   01|鈴木|0001 
#   02|佐藤|0002 
#   01|鈴木|0003 
#  ・欲しい結果 
#   ID|名前|*|DATA1|DATA2 
#   01|鈴木|2|0001 |0003 
#   02|佐藤|1|0002 | 
#   
#  ・説明:group by と count(*) を使うと↓のように、グループ化され消えてしまう列の値を(この場合`0003`の部分)、↑みたく、行に書出す方法はありますか? 
#   ID|名前|*|データ 
#   01|鈴木|2|0001 
#   02|佐藤|1|0002 
#   
#  ・補足:IDは1~1400、count数は1~97、DATAは1~4000位あります。 
# 
# 

欲しい結果(_組) :-
        欲しい結果(_組,_).

欲しい結果(_組,_残り鍵ならび) :-
        鍵ならびを作る(_鍵ならび),
        鍵データの収集(_鍵ならび,_組,_残り鍵ならび).

欲しい結果の表示 :-
        欲しい結果(_組,_残り鍵ならび),
        concat_atom(_組,'|',_組表示文字列),
        writef('%t\n',[_組表示文字列]),
        _残り鍵ならび = [].

鍵ならびを作る(_鍵ならび) :-
        findsetof([_ID,_名前],(
                    テーブルデータ(_ID,_名前,_データ)),
                _鍵ならび).

鍵データの収集(_鍵ならび,_既に処理した鍵ならび,_組,_残り鍵ならび) :-
        一つ鍵を取り出し(_鍵ならび,_既に処理した鍵ならび,_鍵,_残り鍵ならび),
        鍵に対応するデータならび(_鍵,_鍵に対応するデータならび),
        組の構成(_鍵,_鍵に対応するデータならび,_組).

一つ鍵を取り出し(_鍵ならび,_既に処理した鍵ならび,_鍵,_残り鍵ならび) :-
        append(_既に処理した鍵ならび,[_鍵|_残り鍵ならび],_鍵ならび).

鍵に対応するデータならび(_鍵,_鍵に対応するデータならび) :-
        _鍵 = [_ID,_名前],
        findall(_データ,(
                    テーブルデータ(_ID,_名前,_データ)),
                _鍵に対応するデータならび).

組の構成(_鍵,_鍵に対応するデータならび,_組) :-
        length(_鍵に対応するデータならび,_度数),
        append(_鍵,[_度数|_鍵に対応するデータならび],_組).