合并再统计,求一条SQL或存储过程。急/在线等待(2),太激动了,上次没问完就结贴了。

bai_xiao_min 2008-04-06 03:52:40

二个数据表结构

--> 测试数据: #1
if object_id('tempdb.dbo.#1') is not null drop table #1
create table #1 (内容ID int,货物名称 varchar(3))
insert into #1
select 1,'货A' union all
select 2,'货B' union all
select 3,'货C' union all
select 4,'货D'
--> 测试数据: #2
if object_id('tempdb.dbo.#2') is not null drop table #2
create table #2 (出货ID int,出货名称 varchar(3),赚 int,亏 int)
insert into #2
select 1,'货A',100,30 union all
select 2,'货D',50,3 union all
select 3,'货A',30,10 union all
select 4,'货A',650,20 union all
select 5,'货C',70,8 union all
select 5,'货D',555,80
=============================================

select 内容名=a.货物名称,总赚=sum(isnull(b.赚,0)),总亏=sum(isnull(b.亏,0)) from #1 a left join #2 b on a.货物名称=b.出货名称 group by a.货物名称


以上SQL可以得到以下结果
/*
/*
内容名 总赚 总亏
---- ----------- -----------
货A 780 60
货B 0 0
货C 70 8
货D 605 83
*/


*/


=============================================

--我现在的新问题是要加一列"统调",请问那条SQL怎么改,如果不好改,来个存储过程也可以


/*
内容名 总赚 总亏 统调 <------我要加这“统调”列,计算关系如下
---- ----------- ----------- -------
货A 780 60 689 <-------- 780-(0+8+83)
货B 0 0 -151 <-------- 0-(60+8+83)
货C 70 8 -73 <-------- 70-(60+0+83)
货D 605 83 -753 <-------- 605-(60+0+8)
*/



...全文
95 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pt1314917 2008-04-06
  • 打赏
  • 举报
回复
二楼解决了。咱帮顶``
kaikai_kk 2008-04-06
  • 打赏
  • 举报
回复
看看
yyyyzzzz_2002 2008-04-06
  • 打赏
  • 举报
回复
2 楼 正解
-狙击手- 2008-04-06
  • 打赏
  • 举报
回复
路过
Limpire 2008-04-06
  • 打赏
  • 举报
回复
/*
内容名 总赚 总亏 统调
---- ----------- ----------- -----------
货A 780 60 689
货B 0 0 -151
货C 70 8 -73
货D 605 83 537
*/
Limpire 2008-04-06
  • 打赏
  • 举报
回复
605-(60+0+8)=537
Limpire 2008-04-06
  • 打赏
  • 举报
回复
--> 测试数据: #1
if object_id('tempdb.dbo.#1') is not null drop table #1
create table #1 (内容ID int,货物名称 varchar(3))
insert into #1
select 1,'货A' union all
select 2,'货B' union all
select 3,'货C' union all
select 4,'货D'
--> 测试数据: #2
if object_id('tempdb.dbo.#2') is not null drop table #2
create table #2 (出货ID int,出货名称 varchar(3),赚 int,亏 int)
insert into #2
select 1,'货A',100,30 union all
select 2,'货D',50,3 union all
select 3,'货A',30,10 union all
select 4,'货A',650,20 union all
select 5,'货C',70,8 union all
select 5,'货D',555,80

select
内容名=a.货物名称,
总赚=sum(isnull(b.赚,0)),
总亏=sum(isnull(b.亏,0)),
统调=sum(isnull(b.赚,0))-(select isnull(sum(亏),0) from #2 where 出货名称<>a.货物名称)
from
#1 a left join #2 b on a.货物名称=b.出货名称
group by a.货物名称

/*
内容名 总赚 总亏 统调 <------我要加这“统调”列,计算关系如下
---- ----------- ----------- -------
货A 780 60 689 <-------- 780-(0+8+83)
货B 0 0 -151 <-------- 0-(60+8+83)
货C 70 8 -73 <-------- 70-(60+0+83)
货D 605 83 -753 <-------- 605-(60+0+8)
*/
bai_xiao_min 2008-04-06
  • 打赏
  • 举报
回复
上个问题

http://topic.csdn.net/u/20080406/11/813de6bd-73c5-4a24-ba3d-9c794547dfdc.html?seed=1607654937

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧