2017-08-11 61 views
1

我有一个表结构如下。如何选择和组织日期从水平到垂直蜂巢

 
    Materialno | Rate | Month 
    s1   | 20  | jan 
    s1   | 30  | feb 
    s1   | 40  | mar 
    s2   | 20  | jan 
    s2   | 30  | feb 

我需要查询和转换表结构到下面的格式

 
    Materialno | jan_rate |feb_rate |mar_rate 
     s1  | 20  | 30  | 40 
     s2  | 20  | 30  | 

这可能在蜂巢?

回答

1

是:

select Materialno, 
     max(if(Month='jan',Rate,0)) as jan_rate, 
     max(if(Month='feb',Rate,0)) as feb_rate, 
     max(if(Month='mar',Rate,0)) as mar_rate 
     from inputTable group by Materialno; 

这工作假设你有每种材料否”每月一个速度值,否则最高将被选择。

+0

当我运行一年时,它会消耗更多时间吗?是的,我每个材料每个月有超过一个费率 – sasi

+0

它应该是大约相同的时间量。如果您有多个费率,代码将只保留最大值。您可以更改为其他汇总功能(例如'avg') –