[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/10/28(Sat) 06:16
投稿者名:まき
Eメール:
URL :
タイトル:
結果を並べて表示させたい
はじめしてVB6でご教授頂けませんか。
テーブル
名前   着順
はる   1着
なつ   2着
あき   3着
ふゆ   2着
はる   2着
なつ   3着
はる   2着

とありまして、結果をカウントして

名前  1着 2着 3着
はる   1  2  0
なつ   0  1  1
ふゆ   0  1  0
あき   0  0  1

と表示させたいのですがどの様な構文で出来るのか
お手数かと思いますが教えていただけませんか?

投稿時間:2006/10/28(Sat) 07:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 結果を並べて表示させたい
> テーブル
テーブル とは、何の、元々のデータはどのようなものですか?
その他、条件等(並び替えるとか、表示方法等)があるなら詳しく書かないと...。

投稿時間:2006/10/28(Sat) 08:28
投稿者名:まき
Eメール:
URL :
タイトル:
Re^2: 結果を並べて表示させたい
> > テーブル
> テーブル とは、何の、元々のデータはどのようなものですか?
> その他、条件等(並び替えるとか、表示方法等)があるなら詳しく書かないと...。

大変失礼しました。初心者でしてどの様に質問していいかも少しわからなくて
テーブルはアクセスで作成しておます。
条件は着順を1着、2着、3着のそれぞれをカウントし
1着の多い順、同じ回数の場合は2着の多い順・・・に表示させるSQL文が分かりません。

投稿時間:2006/10/31(Tue) 14:31
投稿者名:
Eメール:
URL :
タイトル:
Re^3: 結果を並べて表示させたい
Accessで適当かつ強引に作ってみましたがこんな感じでしょうか?

SELECT T_00.名前,
       IIf(IsNull(T_01.順位1), "0", T_01.順位1) As 1着,
       IIf(IsNull(T_02.順位2), "0", T_02.順位2) As 2着,
       IIf(IsNull(T_03.順位3), "0", T_03.順位3) As 3着
FROM (([SELECT テーブル.名前
       FROM テーブル
       GROUP BY テーブル.名前]. AS T_00
LEFT JOIN [SELECT テーブル.名前, Count(テーブル.順位) AS 順位1
          FROM テーブル
          WHERE (((テーブル.順位) = "1着"))
          GROUP BY テーブル.名前]. AS T_01 ON T_00.名前 = T_01.名前)
LEFT JOIN [SELECT テーブル.名前, Count(テーブル.順位) AS 順位2
          FROM テーブル
          WHERE (((テーブル.順位) = "2着"))
          GROUP BY テーブル.名前]. AS T_02 ON T_00.名前 = T_02.名前)
LEFT JOIN [SELECT テーブル.名前, Count(テーブル.順位) AS 順位3
          FROM テーブル
          WHERE (((テーブル.順位) = "3着"))
          GROUP BY テーブル.名前]. AS T_03 ON T_00.名前 = T_03.名前
ORDER BY T_01.順位1 DESC , T_02.順位2 DESC , T_03.順位3 DESC;

Accessのクエリ作成で作ったものなので、プログラムから利用する際は
若干の修正が必要になるかもしれません。

結果は以下の様になります。

名前    1着    2着    3着
はる    1    2    0
なつ    0    1    1
ふゆ    0    1    0
あき    0    0    1