当前位置:编程学习 > VB >>

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

用VB做开发语言,SQL做数据库,其中有以下二个表:收款明细表(字段:合同编号,客户代码,客户名称,发货单号,数量,单价,应收金额,已收金额,收款时间,收款人),客户预付金额表(字段:客户代码,预付金额),每个月月底要做个统计表与财务对财,统计表只要求有:客户名称和余额二个字段就行了。请问SQL语和VB代码怎么写。应该注意的是:有些客户并没有预付金,直接做的收款明细表。 --------------------编程问答--------------------
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.客户名称
--------------------编程问答-------------------- 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 客户名称,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 客户名称
--------------------编程问答-------------------- 的确,需要另外一张表(假定叫客户基本资料表)来为仅存于 客户预付金额表 中的记录提供用户名称和应付金额。


(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.客户名称)
--------------------编程问答-------------------- 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.客户代码 --------------------编程问答-------------------- 写错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.客户代码
--------------------编程问答-------------------- group by c.客户代码
==》
group by c.客户名称

我是怎么了~~
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,