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 行,一个名称可能出现一次到 60 次之间的任何地方,目前数据中有 893 个不同的唯一名称。

我希望列包含按日期列升序排序的结果的格式,即 R1 是该名称的最旧结果,R2 是第二旧的结果。最后一列 (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 回答