求助!!!!!

富莱工作室 2007-04-16 10:54:06
表a:
编号 金额
0 5000
1 4000

表b:
标的编号 已收金额 审核
0 2000 是
0 1000 未
1 800 未
1 1500 未
1 300 是

表c:
标的编号 坏帐 审核
0 200 是
0 300 未
1 500 是

求查询, 要求输出:

编号 金额 已审回款 未审回款 已审坏帐 未审坏帐 余额
0 5000 2000 1000 200 300 1500
1 4000 300 2300 500 0 900
...全文
149 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scckobe 2007-04-16
  • 打赏
  • 举报
回复
SELECT
a,编号,a.金额,
tb.已审回款,tb. 未审回款,
tc.已审坏帐,tc.未审坏帐
金额-已审回款-未审回款-已审坏帐-未审坏帐 AS 余额
from 表a as a
left join
(
select 标的编号,
SUM(IIF(审核='是',已收金额,0)) as 已审回款 ,
SUM(IIF(审核='未',已收金额,0)) as 未审回款
from 表b
group by 标的编号
) as tb
on tb.标的编号 = a.编号
left join
(
select 标的编号,
SUM(IIF(审核='是',坏帐,0)) as 已审坏帐 ,
SUM(IIF(审核='未',坏帐,0)) as 未审坏帐
from 表c
group by 标的编号
) as tc
on tc.标的编号 = a.编号
wwwwb 2007-04-16
  • 打赏
  • 举报
回复
SELECT C.*, D.*, 金额-已审回款-未审回款-已审坏帐-未审坏帐 AS 余额
FROM QTTA AS C LEFT JOIN (SELECT A.标的编号,
SUM(IIF(A.审核='是',已收金额,0)) as 已审回款 ,SUM(IIF(A.审核='未',已收金额,0)) as 未审回款 ,
SUM(IIF(B.审核='是',坏帐,0)) as 已审坏帐 ,SUM(IIF(B.审核='未',坏帐,0)) as 未审坏帐
FROM (QTTB A LEFT JOIN QTTC B ON A.标的编号=B.标的编号 AND ([A].审核=[B].审核))
GROUP BY A.标的编号 ) AS D ON D.标的编号=C.编号;
富莱工作室 2007-04-16
  • 打赏
  • 举报
回复
我的查询用了LEFT JOIN + SUM + GROUPBY 但不成功, 在表B、C 同一个标的编号有多项记录时, sum结果不对

能够帮我用LEFT JOIN 做一个查询吗?

因为表a中有些记录在表b, 表c中可能还没有记录,它也要显示出来, 所以不能用 INNER JOIN

谢谢

解决即揭贴
wwwwb 2007-04-16
  • 打赏
  • 举报
回复
只有WWWWB这种做法吗?
NO,可以用DSUM(ACCESS中),数个INNER JOIN+GROUP BY ,效率高
一些。

还有我其实使用C++ 、ADO操作的数据库, 不知道为什么ADO 不支持 NZ函数, 除了IIf, 还有什么可以代替Nz的吗?
NZ是VBA函数,非JET SQL函数,在ADO中用IIF(ISNULL())代替。
富莱工作室 2007-04-16
  • 打赏
  • 举报
回复
我使用了 LEFT JOIN + sum 函数, 但在表B、C 同一个标的编号有多项记录时, sum结果不对,

只有WWWWB这种做法吗?

还有我其实使用C++ 、ADO操作的数据库, 不知道为什么ADO 不支持 NZ函数, 除了IIf, 还有什么可以代替Nz的吗?
wwwwb 2007-04-16
  • 打赏
  • 举报
回复
select *,
nz((select sum(已收金额) from b where a.编号 =b.标的编号 and
审核='是'),0) as 已审回款 ,
nz((select sum(已收金额) from b where a.编号 =b.标的编号 and
审核='未'),0) as 未审回款 ,
nz((select sum(坏帐) from c where a.编号 =c.标的编号 and
审核='是'),0) as 已审坏帐 ,
nz((select sum(坏帐) from c where a.编号 =c.标的编号 and
审核='未'),0) as 未审坏帐 ,
金额-已审回款-未审回款-已审坏帐-未审坏帐 as 余额
from 表a a
changechange 2007-04-16
  • 打赏
  • 举报
回复
用 GROUP BY 语句和 JOIN 关系是容易实现上述功能的呀?
wwwwb 2007-04-16
  • 打赏
  • 举报
回复
To scckobe:
你写的很好, 抱歉的是帖子已经结了
NO,scckobe的SQL语句是SQL SERVER下的,你可以在ACCESS中试一下,有问题的。
富莱工作室 2007-04-16
  • 打赏
  • 举报
回复
To scckobe:
你写的很好, 抱歉的是帖子已经结了

7,732

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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