2017-08-11 59 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') –