读书人

请求帮忙!多谢了

发布时间: 2012-01-28 22:06:13 作者: rapoo

请求帮忙!谢谢了!
2.一个简单的表TABLE 有100条以上的信息,其中包括:
产品 颜色 数量
产品1 红色 123
产品1 蓝色 126
产品2 蓝色 103
产品2 红色 NULL
产品2 红色 89
产品1 红色 203
。。。。。。。。。。。。
用SQL语句完成以下问题:

1。按产品分类,仅列出各类商品中红色多于蓝色的商品名称及差额数量:


2。按产品分类,将数据按下列方式进行统计显示
产品 红色 蓝色

[解决办法]
1.
select 产品, 差异 = sum(case 颜色 when '红色 ' then 数量 when '蓝色 ' then - 数量 end)


from tb
group by 产品
having sum(case 颜色 when '红色 ' then 数量 when '蓝色 ' then - 数量 end) > 0
[解决办法]
1,
select 产品, (sum(case 颜色 when '红色 ' then isnull(数量,0) end)-sum(case 颜色 when '蓝色 ' then isnull(数量,0) end)) as 差额
from tb
group by 产品
having (sum(case 颜色 when '红色 ' then isnull(数量,0) end)-sum(case 颜色 when '蓝色 ' then isnull(数量,0) end)) > 0

-----------------------------------------------
2.
select 产品,红色=sum(case 颜色 when '红色 ' then isnull(数量,0)end)
,蓝色=sum(case 颜色 when '蓝色 ' then isnull(数量,0) end)
from tb
group by 产品


[解决办法]
1、
(sum(case 颜色 when '红色 ' then isnull(数量,0) end)-sum(case 颜色 when '蓝色 ' then isnull(数量,0) end)) as 差额

把红色与蓝色的数量之和进行相减得到 ‘差额’列

2、
having (sum(case 颜色 when '红色 ' then isnull(数量,0) end)-sum(case 颜色 when '蓝色 ' then isnull(数量,0) end)) > 0
列的筛选 返回红色的数量大于蓝色的数量的记录

3、
group by 产品

对产品进行分组统计

读书人网 >SQL Server

热点推荐