跪救下列查询语句,急,急!

jumay 2007-12-25 04:11:57
用VB做开发语言,SQL做数据库,其中有以下二个表:收款明细表(字段:合同编号,客户代码,客户名称,发货单号,数量,单价,应收金额,已收金额,收款时间,收款人),客户预付金额表(字段:客户代码,预付金额),每个月月底要做个统计表与财务对财,统计表只要求有:客户名称和余额二个字段就行了。请问SQL语和VB代码怎么写。应该注意的是:有些客户并没有预付金,直接做的收款明细表。
...全文
61 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
group by c.客户代码
==》
group by c.客户名称

我是怎么了~~
回复
写错1个字母了
应该是这样
select c.客户名称,sum(预付金额)+sum(已收金额)-sum(应收金额) 余额 from 收款明细表 a 
full join 客户预付金额表 b on a.客户代码=b.客户代码
left join 客户名称表 c on a.客户代码=c.客户代码 or c.客户代码=b.客户代码
group by c.客户代码
回复
LS的数据库很厉害啊
也可以这样吧
select c.客户名称,sum(预付金额)+sum(已收金额)-sum(应收金额) 余额 from 收款明细表 a
full join 客户预付金额表 b on a.客户代码=b.客户代码
left join 客户名称表 c on a.客户代码=c.客户代码 or a.客户代码=b.客户代码
group by c.客户代码
回复
of123 2007-12-27
的确,需要另外一张表(假定叫客户基本资料表)来为仅存于 客户预付金额表 中的记录提供用户名称和应付金额。


(SELECT a.客户名称, (a.Balance - b.Prepay) AS 余额 FROM (SELECT 客户代码, 客户名称, (SUM(应收金额) - SUM(已收金额)) As Balance FROM 收款明细表 GROUP BY 客户代码, 客户名称) a, (SELECT 客户代码, SUM(预付金额) AS Prepay FROM GROUP BY 客户代码) b WHERE a.客户代码 = b.客户代码 ORDER BY a.客户名称)
UNION
(SELECT 客户名称, (SUM(应收金额) - SUM(已收金额)) AS 余额 FROM 收款明细表 GROUP BY 客户代码, 客户名称 WHERE NOT 客户代码 IN (SELECT DISTINCT 客户代码 FROM 客户预付金额表))
UNION
(SELECT a.客户名称, (a.Balance - b.Prepay) AS 余额 FROM (SELECT 客户代码, 客户名称, (SUM(应收金额) - SUM(已收金额)) As Balance FROM 客户基本资料表 GROUP BY 客户代码, 客户名称) a, (SELECT 客户代码, SUM(预付金额) AS Prepay FROM 客户预付金额表 GROUP BY 客户代码 WHERE NOT 客户代码 IN (SELECT DISTINCT 客户代码 FROM 收款明细表) b WHERE a.客户代码 = b.客户代码 ORDER BY a.客户名称)
回复
chuifengde 2007-12-27
select 客户名称,sum(预付金额)+sum(已收金额)-sum(应收金额) 余额 from 
(select coalesce(a.客户代码,b.客户代码) 客户代码,isnull(已收金额,0) 已收金额,isnull(应收金额,0) 应收金额,isnull(预付金额,0) 预付金额 from
收款明细表 a
Full Join 客户预付金额表 b on a.客户代码=b.客户代码
)aa
Inner Join 客户名称表 bb On aa.客户代码=bb.客户代码
group by 客户名称
回复
那你是不是应该有个客户基本资料表啊
回复
jumay 2007-12-27
有些客户只有在收款明细表中有记录,有些客户只有在客户预付金额表中有记录,每个月月底要做个统计表与财务对帐时,二个表中的所有客户都要统计。
回复
of123 2007-12-25
SELECT a.客户名称, (a.Balance - b.Prepay) AS 余额 FROM (SELECT 客户代码, 客户名称, (SUM(应收金额) - SUM(已收金额)) As Balance FROM 收款明细表 GROUP BY 客户代码, 客户名称) a, (SELECT 客户代码, SUM(预付金额) AS Prepay FROM 客户预付金额表 GROUP BY 客户代码) b WHERE a.客户代码 = b.客户代码 ORDER BY a.客户名称
回复
select a.客户名称,sum(a.已收金额)-sum(a.应收金额)+sum(case when b.预付金额 is null then 0 else b.预付金额 end ) as 余额 from 收款明细表 a,客户预付金额表 b where a.客户代码=b.客户代码 group by a.客户名称
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告