| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2297 人关注过本帖
标题:[求助] 多表连接与查询
只看楼主 加入收藏
zkqbp
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-7-7
收藏
 问题点数:0 回复次数:22 
[求助] 多表连接与查询

请高手指点

有二个数据表,一个表包括日期和收入金额,另一个表包括日期和支出金额,二个表的日期不完全相同。希望得到每个日期的余额,即余额=收入金额-支出金额。在计算余额前要用SUM函数和GROUP语句分别计算收入金额和支出金额,因为每个日期可能不止一笔帐。

二表如下:

A表 B表
日期 收入金额 日期 支出金额
1 10 1 5
1 20 1 4
2 30 3 10
2 10

求每天余额,即余额=收入金额-支出金额

多谢了

[此贴子已经被作者于2007-7-7 10:28:51编辑过]

搜索更多相关主题的帖子: 查询 
2007-07-07 09:11
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 

select date1,sum(import) as import into #temp11 from a group by date1
select date1,sum(export) as export into #temp22 from b group by date1
select a.date1 as date1,sum(import-export) from #temp11 a left join #temp22 b on a.date1=b.date1 group by a.date1
這個比較繁,但是功能還是能達到。


你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-07-07 16:32
zkqbp
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-7-7
收藏
得分:0 
多谢 sky_yang_sky 的 指点 我还有几个问题请帮助:

1。我用的 是Access数据库,用 # 建立临时数据库,编译通不过,不用# 建立的数据库是永久性的。
2。由于数据表B没有日期2,表A的收入金额是否会减 NULL 值? 如是,怎样处理? 我曾用过ISNULL函数,运行时
总出现参数个数不够的提示。
3。由于数据表A没有日期3,用left join 是否会日期3的数据无法统计?

再次多谢了
2007-07-08 09:53
liuzhe
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-2-25
收藏
得分:0 
2楼的那种算法日期3是在查询结果中是没有的吧
2007-07-10 16:39
liuzhe
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-2-25
收藏
得分:0 
要想把3也显示出来 用full join好了  
2007-07-10 17:26
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 

2。由于数据表B没有日期2,表A的收入金额是否会减 NULL 值? 如是,怎样处理? 我曾用过ISNULL函数,运行时
总出现参数个数不够的提示。
3。由于数据表A没有日期3,用left join 是否会日期3的数据无法统计?
的確如樓主所說的,那就改一下就可以,超出蕩圍領的話就成負
select isnull(a.day1,b.day1) as day1, sum(isnull(import,0)-isnull(export,0)) from #temp11 a full join #temp22 b on a.day1=b.day1 group by a.day1,b.day1
1。我用的 是Access数据库,用 # 建立临时数据库,编译通不过,不用# 建立的数据库是永久性的。
我只偶爾用ACCESS,但不熟悉,我想你可以先建表再刪就行了


你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-07-10 17:32
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 
to zkqbp
鐘對你前面提出的三個問題,我將語句改為如下,應該不會存在你所說的問題了
select isnull(a.day1,b.day1) as day1,sum(isnull(import,0)-isnull(export,0)) as remain from (select day1,sum(import)as import from a group by day1) a full join (select day1,sum(export) as export from b group by day1) b on a.day1=b.day1 group by a.day1,b.day1

你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-07-11 08:28
zkqbp
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-7-7
收藏
得分:0 
回复:(sky_yang_sky)to zkqbp鐘對你前面提出的三個...
sky_yang_sky:
我用你给的程序,编译总无法通过,信息是“未指定的错误”。
select isnull(a.day1,b.day1) as day1,sum(isnull(import,0)-isnull(export,0)) as remain from (select day1,sum(import)as import from a group by day1) a full join (select day1,sum(export) as export from b group by day1) b on a.day1=b.day1 group by a.day1,b.day1

其中 红色的a b 我不明白。你的语句中所有a b 都是分别指二个数据表名?
2007-07-12 09:42
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 

你在什麼上面執行的,我是MSSQL上的。這兒的a,b分別是我給(select day1,sum(import)as import from a group by day1),(select day1,sum(export) as export from b group by day1)命的別名如已,也可換成別的,只要相應欄位對應就行了。


你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-07-12 11:24
sky_yang_sky
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:481
专家分:16
注 册:2007-5-30
收藏
得分:0 
day1 remain
2 40
1 21
3 -10
以上是我以你的數據執行的結果

你微笑的面對整個世界,整個世界也將會微笑的面對你。
2007-07-12 11:32
快速回复:[求助] 多表连接与查询
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017223 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved