免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4428 | 回复: 4
打印 上一主题 下一主题

发个groupby 和union的帖子看这里有没高手 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-23 12:03 |只看该作者 |倒序浏览
本帖最后由 白云的心 于 2010-1-23 12:07 编辑

两张表,一张是项目支出,一张是项目回款,两张表结构不一样,如何将其按月汇总,分别写到一张汇总表的一条记录里,具体如下:

支出表字段:ID1 项目ID,项目名称,支出金额,时间...
回款表字段:ID2 项目ID,项目名称,回款金额,时间...
汇总表字段和数据:
ID3,项目ID,项目名称,  年,  月,本月总计支出,本月总计回款....
033  020        汇景花园 2009   07     260万         370万......

注意,若直接用select SUM(支出金额),SUM(回款金额) From 支出表, 回款表 group by MONTH(支出表.时间),MONTH(回款表.时间)是肯定不行的。
必须用类似
GROUP BY (SELECT MONTH(支出表.时间)From 支出表 UNION SELECT MONTH(回款表.时间)FROM 回款表)的语句
可惜 GROUP BY 里不能用聚合,所以,比较麻烦,希望这里确实有高手能指点一二,先谢了.....

论坛徽章:
0
2 [报告]
发表于 2010-01-24 21:21 |只看该作者
方法1:
create or replace view MTD_PROJECT_OUTSTANDING
as
select a.ID,a.项目名称 desc,to_char(a.时间,\'YYYYMM\') SumDate,sum(支出表.金额)total_tx_out,sum(收入表.金额)total_tx_in
from 支出表 a,收入表 b
where a.项目ID = b.项目ID
and to_char(a.时间,\'YYYYMM\')=to_char(b.时间,\'YYYYMM\')
group by a.ID,a.项目名称,to_char(a.时间,\'YYYYMM\')


select  a.ID,a.项目名称 desc,substr(a.SumDate,1.4) Year,substr(a.SumDate,5,2) Month,
total_tx_out,total_tx_in
from MTD_PROJECT_OUTSTANDING
order by .....

方法2
create or replace view MTD_PROJECT_OUTSTANDING
as
select ID,项目名称 desc, to_char(时间,\'YYYYMM\') , sum(支出金额) tx_out,0.00 tx_in
from 支出表
group by ID,项目名称to_char(时间,\'YYYYMM\');
union all
select ID,项目名称 desc, to_char(时间,\'YYYYMM\'), 0.00 tx_out,sum(回款金额) tx_in
from 收入表
group by ID,项目名称to_char(时间,\'YYYYMM\');

select  a.ID,a.项目名称 desc,substr(a.SumDate,1.4) Year,substr(a.SumDate,5,2) Month,
total_tx_out,total_tx_in
from MTD_PROJECT_OUTSTANDING
order by .....

论坛徽章:
0
3 [报告]
发表于 2010-01-25 17:03 |只看该作者
嗯,谢谢蝴蝶!
我已经搞定了,具体方法和蝴蝶说的方法二类似,要点在于,先将两个明细表的记录按照固定格式提取,然后union all形成一个记录集,以此此记录集为输入源再根据月份汇总。
再次谢谢所有人!

论坛徽章:
0
4 [报告]
发表于 2010-01-27 14:16 |只看该作者
groupby确实不太会用啊。

论坛徽章:
0
5 [报告]
发表于 2010-01-27 14:21 |只看该作者
:heng:蝴蝶是高人,呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP