三个表分组统计的问题(在线等。100分。急急急急)

angeldjd 2008-08-19 03:03:09
现在有三个表,表1里有一个字段实际金额,表二里有个字段出货金额,表三里有个字段支出总金额。
实际金额-出货金额-支出总金额=月份利润。
这三个表里还有一个共同字段是产地。现要求按产地算出月份利润,应该如何做?
...全文
99 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复
汗,那看来我还是猜到了lz的意图..哈哈~
-_-!
xuyang840117 2008-08-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 lovehongyun 的回复:]
难道你要这样?

SQL code
select (tt1.实际金额-tt2.出货金额-tt3.支出总金额) as 利润,tt1.产地,tt1.月
from
(
select sum(实际金额) as 实际金额,产地,datepart(mm,时间) as 月
from t1
group by 产地,datepart(mm,时间)
) tt1,
(
select sum(出货金额) as 出货金额,产地,datepart(mm,时间) as 月
from t2
group by 产地,datepart(mm,时间)
) tt2,
(
select sum(支出总金额) as 支出总金额,产地,datepart(mm,…
[/Quote]

个人认为楼主要的就是这样的
xuyang840117 2008-08-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 angeldjd 的回复:]
那如果 t1.id = t2.id and t1.id = t3.id
这三个ID没有什么必在的联系呢?这个ID对应不上呢?
[/Quote]

通过时间 产地联
你们好像都没有理解楼主的意思
我认为楼主是这样的 表1 ID,时间,实际金额,产地
1 1 123 12
2 1 12 23
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复
难道你要这样?

select (tt1.实际金额-tt2.出货金额-tt3.支出总金额) as 利润,tt1.产地,tt1.月
from
(
select sum(实际金额) as 实际金额,产地,datepart(mm,时间) as 月
from t1
group by 产地,datepart(mm,时间)
) tt1,
(
select sum(出货金额) as 出货金额,产地,datepart(mm,时间) as 月
from t2
group by 产地,datepart(mm,时间)
) tt2,
(
select sum(支出总金额) as 支出总金额,产地,datepart(mm,时间) as 月
from t3
group by 产地,datepart(mm,时间)
) tt3
where tt1.产地=tt2.产地 and tt1.月=tt2.月 and tt1.产地=tt3.产地 and tt1.月=tt3.月
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 angeldjd 的回复:]
那如果 t1.id = t2.id and t1.id = t3.id
这三个ID没有什么必在的联系呢?这个ID对应不上呢?
[/Quote]

对不上你怎么关联?

对不上的话.只能按照产地和时间进行关联.
angeldjd 2008-08-19
  • 打赏
  • 举报
回复
那如果 t1.id = t2.id and t1.id = t3.id
这三个ID没有什么必在的联系呢?这个ID对应不上呢?
wangkun9999 2008-08-19
  • 打赏
  • 举报
回复
你这个时间的格式是什么,是代表一个月还是一天,还是到时分秒?
如果是代表月分,按我上面的那条语名就可以了;如果不是得到group by 后面加个条件.
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复
我不知道你的时间字段里存的什么内容.如果存的是日期类型的数据,那就看我9楼发的语句就可以.
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复

select sum(t1.实际金额-t2.出货金额-t3.支出总金额) as 利润,t1.产地,datepart(mm,t1.时间)
from t1,t2,t3
where t1.id = t2.id and t1.id = t3.id
group by t1.产地,datepart(mm,t1.时间)
angeldjd 2008-08-19
  • 打赏
  • 举报
回复
是的,是按产地算出每个月的利润。
表1:ID,时间,实际金额,产地
表2:ID,时间,出货金额,产地
表3:ID,时间,支出总金额,产地
这个就是表的简单结构,其它字段用不上,比如表1里有,单价,数量,单价×数量得出实际金额。
lovehongyun 2008-08-19
  • 打赏
  • 举报
回复
按产地算出月份利润
-----------
是按产地算出每个月的利润吗?

你最好把你的表结构简单写一下..
MisterDotNet 2008-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangkun9999 的回复:]
SQL code

select sum(c.实际金额-b.出货金额-a.支出总金额) as 月份利润,c.产地 from 表一 a inner join 表二 b on a.id=b.id inner join 表三 c on a.id=c.id group by c.产地
[/Quote]
angeldjd 2008-08-19
  • 打赏
  • 举报
回复
用不着别的字段参与吧。。

表1:ID,时间,实际金额,产地
表2:ID,时间,出货金额,产地
表3:ID,时间,支出总金额,产地

要按时间,和产地算出月份利润
月份利润=实际金额-出货金额-支出总金额
panw520 2008-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangkun9999 的回复:]
SQL codeselectsum(c.实际金额-b.出货金额-a.支出总金额)as月份利润,c.产地from表一 ainnerjoin表二 bona.id=b.idinnerjoin表三 cona.id=c.idgroupbyc.产地
[/Quote]
wangkun9999 2008-08-19
  • 打赏
  • 举报
回复


select sum(c.实际金额-b.出货金额-a.支出总金额) as 月份利润,c.产地 from 表一 a inner join 表二 b on a.id=b.id inner join 表三 c on a.id=c.id group by c.产地

wangkun9999 2008-08-19
  • 打赏
  • 举报
回复

select sum(a.实际金额-b.出货金额-c.支出总金额) as 月份利润,c.产地 from 表一 a inner join 表二 b on a.id=b.id inner join 表三 c on a.id=c.id group by c.产地

wangkun9999 2008-08-19
  • 打赏
  • 举报
回复
贴出详细的表结构先

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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