请问数据库分组查询的有关问题
请教数据库分组查询的问题
库中数据如下:
产品 标志 收入 支出 结余
A 是 200
A 否 5
A 否 2
A 否 13
B 是 50
B 否 3
B 否 2
B 否 5
查询标志为“是”的产品,查询结果如下:
产品 标志 收入 支出 结余
A 是 200 180 20
B 是 50 10 40
谢谢!
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
应该是这个意思,只是把结果写反了。
------解决思路----------------------
。。。。。。好像在玩猜猜看額。。。。。。
当 [标志] 为 “否" 时的 [收入],和 [标志] 为 "是" 时的 [支出] 是不是要考虑一起计算进去呢?
如果也要一起计算,楼上的就是。
如果不考虑计算到一起,应该这么写吧。
库中数据如下:
产品 标志 收入 支出 结余
A 是 200
A 否 5
A 否 2
A 否 13
B 是 50
B 否 3
B 否 2
B 否 5
查询标志为“是”的产品,查询结果如下:
产品 标志 收入 支出 结余
A 是 200 180 20
B 是 50 10 40
谢谢!
------解决思路----------------------
估计楼主的意思是:
select
产品,标志,
sum(收入),sum(支出),sum(收入)-sum(支出)
from
tb
group by
产品,标志
------解决思路----------------------
create table zf
(产品 varchar(10),标志 varchar(10),收入 int,支出 int,结余 int)
insert into zf
select 'A','是',200,null,null union all
select 'A','否',null,5,null union all
select 'A','否',null,2,null union all
select 'A','否',null,13,null union all
select 'B','是',50,null,null union all
select 'B','否',null,3,null union all
select 'B','否',null,2,null union all
select 'B','否',null,5,null
select a.产品,
a.标志,
a.收入,
isnull(b.支出,0) '支出',
a.收入-isnull(b.支出,0) '结余'
from (select 产品,
标志,
sum(收入) '收入'
from zf
where 标志='是'
group by 产品,标志) a
left join (select 产品,
sum(支出) '支出'
from zf
where 标志<>'是'
group by 产品) b on a.产品=b.产品
/*
产品 标志 收入 支出 结余
---------- ---------- ----------- ----------- -----------
A 是 200 20 180
B 是 50 10 40
(2 row(s) affected)
*/
------解决思路----------------------
应该是这个意思,只是把结果写反了。
------解决思路----------------------
。。。。。。好像在玩猜猜看額。。。。。。
当 [标志] 为 “否" 时的 [收入],和 [标志] 为 "是" 时的 [支出] 是不是要考虑一起计算进去呢?
如果也要一起计算,楼上的就是。
如果不考虑计算到一起,应该这么写吧。
select
t.产品, t1.标志,
t1.收入, t2.支出, (t1.收入 - t2.支出) as 结余
from
(
select 产品 from tbl1 group by 产品
) as t
left join
(
select 产品, 标志, sum(收入) as 收入 from tbl1 where 标志 = '是' group by 产品, 标志
) as t1
on t.产品 = t1.产品
left join
(
select 产品, sum(支出) as 支出 from tbl1 where 标志 = '否' group by 产品
) as t2
on t.产品 = t2.产品