如图,我想达到的效果是:
在“customcode”相同的情况下,根据“material_”和“color_”来筛选,分组显示。
达到以下效果:就是说“quantity”分三列显示,超出三列,另起一行。
我要怎么写这个视图?

解决方案 »

  1.   

    select customcode, material_, color_
    , max(if(_r % 3 =0,quantity,null)) as row1
        , max(if(_r % 3 =1,quantity,null)) as row2
        , max(if(_r % 3 =2,quantity,null)) as row3
    from(
    select a.*
    ,@i:=if(@p=concat(customcode, '|', material_, '|', color_), @i+1, 0) as _r
        ,@p:=concat(customcode, '|', material_, '|', color_) as _p 
    from table_name_of_data a,(select @i:=0) b,(select @p:='')c 
    order by customcode, material_, color_
    ) data
    group by customcode, material_, color_, _r div 3;