用group by关键字, 某一字段值相同的分一组,不相同的分一组的SQL语句怎么写?比如下面这个语句,“select goods as 货物名称,count(truckno) as 车数,sum(gross) as 毛重,sum(tare) as 皮重,sum(net) as 净重 from main group by goods”,这样写相同的goods分为一组,如果我想让goods=‘熟料’的分为一组,goods不是'熟料'的分为一组,总共就两组,这样的SQL语句怎么写?如果要实现这个功能,不用groud by关键字又应该怎么写SQL语句?

解决方案 »

  1.   

    group by (case when goods=‘熟料’then 1 else 0 end);
      

  2.   

    select '熟料' as 货物名称,count(truckno) as 车数,sum(gross) as 毛重,sum(tare) as 皮重,sum(net) as 净重 from main where goods='熟料' 
    union all
    select '其他' as 货物名称,count(truckno) as 车数,sum(gross) as 毛重,sum(tare) as 皮重,sum(net) as 净重 from main where goods!='熟料' 
      

  3.   

    select goods as 货物名称,count(truckno) as 车数,sum(gross) as 毛重,sum(tare) as 皮重,sum(net) as 净重 from main where goods='熟料' 
    union all
    select goods as 货物名称,count(truckno) as 车数,sum(gross) as 毛重,sum(tare) as 皮重,sum(net) as 净重 from main where goods<>'熟料' 
    group by 货物名称,车数,毛重,皮重,净重