有个表tlb_count(tlb_name(商品名称),tlb_color(商品颜色),tlb_qty(商品数量))
tlb_name tlb_color tlb_qty
name1 蓝色 100
name2 红色 458
name1 蓝色 256
name1 红色 255
name2 蓝色 723
name2 蓝色 156
...
请用一句SQL语句进行下面功能的统计:
a.按照商品名称分类,统计红色比蓝色多的商品名称及数量差额.(商品名称,数量差额)
b.按照商品名称分类进行统计(商品名称,红色数量,蓝色数量).
tlb_name tlb_color tlb_qty
name1 蓝色 100
name2 红色 458
name1 蓝色 256
name1 红色 255
name2 蓝色 723
name2 蓝色 156
...
请用一句SQL语句进行下面功能的统计:
a.按照商品名称分类,统计红色比蓝色多的商品名称及数量差额.(商品名称,数量差额)
b.按照商品名称分类进行统计(商品名称,红色数量,蓝色数量).
declare @tlb_count table(tlb_name varchar(10),tlb_color varchar(10),tlb_qty int)
insert @tlb_count
select 'name1', '蓝色', 100 union all
select 'name2', '红色', 458 union all
select 'name1', '蓝色', 256 union all
select 'name1', '红色', 255 union all
select 'name2', '蓝色', 723 union all
select 'name2', '蓝色', 156----1.
select tlb_name,数量差额 =
sum(case tlb_color when '红色' then tlb_qty else -tlb_qty end)
from @tlb_count group by tlb_name
having sum(case tlb_color when '红色' then tlb_qty else -tlb_qty end) > 0----2.
select tlb_name,
红色数量 =
sum(case tlb_color when '红色' then tlb_qty else 0 end),
蓝色数量 =
sum(case tlb_color when '蓝色' then tlb_qty else 0 end)
from @tlb_count group by tlb_name /*结果
tlb_name 数量差额
---------- ----------- (所影响的行数为 0 行)tlb_name 红色数量 蓝色数量
---------- ----------- -----------
name1 255 356
name2 458 879
(所影响的行数为 2 行)
*/