有一张表,产品共有2个类别A和B,地区有很多产品地区 出售数量 产品类别
江苏 10 A
上海 20 B
山东 14 A
我想要的效果是按地区group by,出来的是各个地区A产品销售数量及B产品销售数量,如下面这样
A B
江苏 10 0
上海 0 20
山东 14 0为避免无效回复,先贴10分,如果解决再给40分。
江苏 10 A
上海 20 B
山东 14 A
我想要的效果是按地区group by,出来的是各个地区A产品销售数量及B产品销售数量,如下面这样
A B
江苏 10 0
上海 0 20
山东 14 0为避免无效回复,先贴10分,如果解决再给40分。
sum(case when 产品类别='B' then 出售数量 else 0 end) as B
from tb
group by 产品地区
select 产品地区 ,sum(case when 产品类别 = 'A' then 数量 else 0 end) as A,sum(case when 产品类别 = 'B' then 数量 else 0 end) as B
from table group by 产品地区
-- Author :fredrickhu(我是小F,向高手学习)
-- Date :2009-11-03 10:01:09
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([产品地区] varchar(4),[出售数量] int,[产品类别] varchar(1))
insert [tb]
select '江苏',10,'A' union all
select '上海',20,'B' union all
select '山东',14,'A'
--------------开始查询--------------------------
select
产品地区,
sum(case when 产品类别='A' then 出售数量 else 0 end) as A,
sum(case when 产品类别='B' then 出售数量 else 0 end) as B
from
tb
group by
产品地区
----------------结果----------------------------
/* 产品地区 A B
---- ----------- -----------
江苏 10 0
山东 14 0
上海 0 20(3 行受影响)
*/