zero_and_zero 2011-10-11 17:49 采纳率: 0%
浏览 157
已采纳

把一个表以不同的形式展示,除了遍历重组还有木有好的办法??

左边的表示是原始表,需要以右表的形式展示,我想到的是遍历左表,然后根据各种繁琐的判断重组出右表,但是这种数据问题该是很普通的,既然是普遍问题就该早有人想出过简单的办法,大牛们给点提示或给我个线索

  • 写回答

3条回答 默认 最新

  • iteye_8576 2011-10-12 08:53
    关注

    如果是数据库中的表,通过sql进行行列转换
    [code="sql"]
    select * from t;

    ITEM_ID T_DATE NUM


         1 a              11
         1 b              12
         1 c              13
         2 a              14
         2 b               5
         2 c              20
         3 b              30
         3 c              40
         4 a              50
         5 a              60
         5 b              70
         5 c              80
         5 d              90
    

    --sql:
    SELECT t.item_id,
    MAX(CASE t.t_date WHEN 'a' THEN t.num ELSE NULL END) date_a,
    MAX(CASE t.t_date WHEN 'b' THEN t.num ELSE NULL END) date_b,
    MAX(CASE t.t_date WHEN 'c' THEN t.num ELSE NULL END) date_c,
    MAX(CASE t.t_date WHEN 'd' THEN t.num ELSE NULL END) date_d
    FROM t
    GROUP BY t.item_id
    ORDER BY t.item_id
    ;

    ITEM_ID DATE_A DATE_B DATE_C DATE_D


         1         11         12         13 
         2         14          5         20 
         3                    30         40 
         4         50                       
         5         60         70         80         90
    

    [/code]
    如果不是数据库表,就得通过程序判断了,很麻烦`~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?