首页 新闻 搜索 专区 学院

sql 语句如何?

0
[已解决问题] 解决于 2015-07-13 11:00

唉,最近遇到sql查询的问题,想了下没有思路,还请高手们帮我看下,如何写这样的Sql 语句 ,谢谢。。

 首先要在这里要谢谢大家,第二题的产品数据是存在问题的。现在详细看了下。并修改了。且而这些问题,我已经解决了。谢谢

 

     

2)表数据下:
产品 颜色 数量

产品1 蓝色 45
产品1 红色 40
产品2 红色 33
产品2 蓝色 45
产品3 红色 66
产品3 蓝色 null
产品4 红色 45
产品4 蓝色 76
产品5 红色 80
产品6 红色 90

1>根据产品颜色分别计算产品数量及它们之间的差额,并展示 产品列 差额值。


with test2 as (
select '产品1' as 产品 , '蓝色'as 颜色 , 45 as 数量
union all
select '产品1', '红色' , 40
union all
select '产品2', '红色', 33
union all
select '产品2', '蓝色', 45
union all
select '产品3' , '红色', 66
union all
select '产品3' , '蓝色', null
union all
select '产品4' , '红色', 45
union all
select '产品4', '蓝色', 76
union all
select '产品5' , '红色' , 80
union all
select '产品6' ,'红色' ,90
)

select 产品, (SUM(case 颜色 when '蓝色' then 数量 else 0 end)-SUM(case 颜色 when '红色' then 数量 else 0 end)) 差额值 from test2 group by 产品

2>统计产品
产品 蓝色 红色
-- 产品 颜色 数量

with test1 as (
select '产品1' as 产品 , '蓝色'as 颜色 , 45 as 数量
union all
select '产品1', '红色' , 40
union all
select '产品2', '红色', 33
union all
select '产品2', '蓝色', 45
union all
select '产品3' , '红色', 66
union all
select '产品3' , '蓝色', null
union all
select '产品4' , '红色', 45
union all
select '产品4', '蓝色', 76
union all
select '产品5' , '红色' , 80
union all
select '产品6' ,'红色' ,90
)
select MAX(产品)产品, sum(case 颜色 when '蓝色' then 数量 else 0 end ) as 蓝色,SUM(case 颜色 when '红色' then 数量 else 0 end) as 红色 from test1 group by 产

    

    

问题补充:

第一题:

with test as (
select 2015-01-02 日期 , 3 数量
union all
select 2015-01-02 , 2
union all
select 2015-01-02 , 1
union all
select 2015-01-02 , 0
union all
select 2015-01-03 , 0)


select * from test where 日期 in (select max(日期)as 日期 from test group by 日期 having COUNT(日期)>1 ) and 数量<>0
union all
select * from test where 日期 in (select max(日期)as 日期 from test group by 日期 having COUNT(日期)=1 )

KenyonLi的主页 KenyonLi | 初学一级 | 园豆:165
提问于:2015-07-12 14:50
< >
分享
最佳答案
0

业务逻辑不是很清楚啊。。。

第一个是不是要求:若有非零数据则获取非零数据,若没有非零数据则取0?

第二个每个产品都只有一条数据,就只有一个颜色,怎么计算差值?难道要获得差值为45或者-40之类的?

奖励园豆:5
小白菜T | 小虾三级 |园豆:564 | 2015-07-13 10:07
其他回答(4)
0

这个多想想应该很简单

树形图 | 园豆:17 (初学一级) | 2015-07-12 18:07

嗯,给点思路。

支持(0) 反对(0) KenyonLi | 园豆:165 (初学一级) | 2015-07-12 21:42
0

第二题(1)好像有点绕啊,其他还行

IT火 | 园豆:198 (初学一级) | 2015-07-12 21:56

第一 ,怎么写呢?

支持(0) 反对(0) KenyonLi | 园豆:165 (初学一级) | 2015-07-12 22:49
0

第一个不考虑性能可以:select 日期,max(数量) from table group by 日期

第二道题是不是错了,应该是每种产品对应两个颜色。

木 易 | 园豆:219 (菜鸟二级) | 2015-07-12 23:04
0

谢谢大家,这些问题我自己解决了。

KenyonLi | 园豆:165 (初学一级) | 2015-07-13 10:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册