0

私はフォーマットのテーブルを持っています

  Date       | Name  | Result
  ---------------------------
  2012-05-02 | bob   | W
  2012-04-01 | kevin | D
  2012-03-21 | mark  | L
  2012-03-19 | bob   | W

そして、Excelにエクスポートできるクエリを作成したいと思います。現在、テーブルには約3000行が含まれており、名前は1回から60回の間のどこかに表示される可能性があり、現在、データには893個の異なる一意の名前があります。

列に日付列の昇順で並べ替えられた結果が含まれる形式にします。つまり、R1はその名前の最も古い結果であり、R2は2番目に古い結果です。最後の列(Rn)が最新の結果になります。縞などを簡単に確認できます。

   Name   | R1 | R2 | R3 ....
   -------------------
   Bob    | W  | W  | D | W ....
   Mark   | D  | L  |
   Trevor | 

名前、日付の昇順での日付結果の順序を選択することで、個々の名前に対してこれを行うことができますが、これは列として返されます。もちろん、列にExcelで手動で編集できますが、名前ごとにSQLでこれを行う方法はありますか?

何かのようなもの:

 select f_name,
 select f_result from table a where f_name=b.f_name order by f_date asc limit 1   as r1, 
 select f_result from table a where f_name=b.f_name order by f_date asc limit 2,1 as r2, 
 select f_result from table a where f_name=b.f_name order by f_date asc limit 3,1 as r3 
 from table b, table b
 where a.id=b.id

ただし、これは入力、更新、および保守に非常に時間がかかるため、明らかにプログラム的に行われます。

敬具

編集:cronジョブを介してデータを維持できるものを作成する方が簡単な場合は、テーブルやビューなどを作成する権限があることに注意してください。そして、私のエクスポートはselect * from .. ..

4

1 に答える 1

0

私の質問によると、ベーステーブルを作成し、52行の更新スクリプトを実行して列を追加し、0.1から51,1までの値に制限された値を挿入して正しい結果を取得しました。

私のサーバーではパフォーマンスが問題だったので、これらを一度に10/15のクエリにグループ化するのが最善です。

于 2012-05-14T07:57:33.533 に答える