为了账号安全,请及时绑定邮箱和手机立即绑定

大牛们给点提示或给我个线索?就是想把一个表以不同的形式展示,除了遍历重组还有木有好的办法??

大牛们给点提示或给我个线索?就是想把一个表以不同的形式展示,除了遍历重组还有木有好的办法??

倚天杖 2023-04-09 13:09:49
左边的表示是原始表,需要以右表的形式展示,我想到的是遍历左表,然后根据各种繁琐的判断重组出右表,但是这种数据问题该是很普通的,既然是普遍问题就该早有人想出过简单的办法?
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果是数据库中的表,通过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  

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


查看完整回答
反对 回复 2023-04-12
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信