有个表 ware 其中字段:pinzhong(品种),pinpai(品牌),xinghao(型号),shangdian(分店),zhuangtai(状态:已销售或未销售)
例如:
       pinzhong  pinpai  xinghao shangdian zhuangtai 
       数码相机 索尼数码 F717    仓库      未销售
       U盘      清华紫光 12G     仓库      未销售
       U盘      清华紫光 8G      中山分店  已销售
       MP3      清华紫光 1G      仓库      未销售 
       数码相机 索尼数码 F717    中山分店  未销售
       MP3      清华紫光 1G      嘉贸分店  已销售 
       MP3      清华紫光 1G      嘉贸分店  未销售 
       MP3      清华紫光 1G      中山分店  已销售
       
现在我要按照分店(shangdian)分组统计出 各种类|品牌|型号 为'未销售'的数然后排列如下  pinzhong  pinpai     xinghao  仓库  中山分店 嘉贸分店
  数码相机  索尼数码   F717      1     1        0
  U盘       清华紫光   12G       1     0        0
  U盘       清华紫光   8G        0     1        0
  MP3       清华紫光   1G        1     1        2
  
 请问如何实现??sql语句应如何写?

解决方案 »

  1.   


    CREATE TABLE `test_sum` (
      `name` varchar(10) default NULL,
      `band` varchar(20) default NULL,
      `type` varchar(30) default NULL,
      `branch` varchar(20) default NULL,
      `status` varchar(100) default NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;INSERT INTO `test_sum` VALUES ('数码相机','索尼数码','F717','仓库','未销售');
    INSERT INTO `test_sum` VALUES ('U盘','清华紫光','12G','仓库','未销售');
    INSERT INTO `test_sum` VALUES ('U盘','清华紫光','8G','中山分店','已销售');
    INSERT INTO `test_sum` VALUES ('MP3','清华紫光','1G','仓库','未销售');
    INSERT INTO `test_sum` VALUES ('数码相机','索尼数码','F717','中山分店','未销售');
    INSERT INTO `test_sum` VALUES ('MP3','清华紫光','1G','嘉茂分店','未销售');
    INSERT INTO `test_sum` VALUES ('MP3','清华紫光','1G','中山分店','已销售');
    INSERT INTO `test_sum` VALUES ('MP3','清华紫光','1G','嘉茂分店','已销售');select name,band,type,sum(if(branch='仓库',1,0)) as cangku,sum(if(branch='中山分店',1,0)) as zhongshang,sum(if(branch='嘉茂分店',1,0)) as jiamao from test_sum where status='未销售' group by name, band,type;