我想查询两个表中的数据在一个GRID中显示出来:
一个表是:收款表,一个是付款表
其中他们都和项目表关联;
一个项目可以多次收款,也可以多次付款
收款表::项目编号,付款次数,付款金额
付款表::项目编号,收款次数,收款金额
现在我想做到查询结果::
项目编号,付款次数,付款金额,收款次数,收款金额;
如果收款记录多余付款记录,那么查询的记录条数就取多的那个条数;;;
请问如何实现呢???
一个表是:收款表,一个是付款表
其中他们都和项目表关联;
一个项目可以多次收款,也可以多次付款
收款表::项目编号,付款次数,付款金额
付款表::项目编号,收款次数,收款金额
现在我想做到查询结果::
项目编号,付款次数,付款金额,收款次数,收款金额;
如果收款记录多余付款记录,那么查询的记录条数就取多的那个条数;;;
请问如何实现呢???
解决方案 »
- OPC SyncRead
- 我想将一个软件如acdsee封装到我的程序里,然后可以在我的程序里面按我的要求让它工作,如何入手呢?
- 用OpenDataSource怎么在客户端导入excel数据到SQLServer呢?
- 请教关于消息处理的问题,100分送上
- 在客户端采用ClientDataSet控件更新数据库,有什么好的办法?
- 关于编写控件类型转化的问题
- 页合计!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- BDE能同时维持多少个BDE会话期间呢??(既,同时能建立几个对specific database的联结
- 我是一个菜鸟,希望大家能回答我这个简单的问题
- 暴走啦!!!!
- ado连接,如何全部删除记录中“日期”字段等于某一天的记录呢?
- 兄弟们支持一下小弟做的网站好不!
有什么办法呢?
收款表::项目编号,付款次数,付款金额
付款表::项目编号,收款次数,收款金额select x.项目编号,isnull(f.付款次数,0) 付款次数,isnull(f.付款金额,0) 付款金额,isnull(s.收款次数,0) 收款次数,isnull(s.收款金额,0) 收款金额
from 项目表 x,收款表 s,付款表 f
where x.项目编号=s.项目编号 and x.项目编号=f.项目编号
select x.项目编号,isnull(f.付款次数,0) 付款次数,isnull(f.付款金额,0) 付款金额,isnull(s.收款次数,0) 收款次数,isnull(s.收款金额,0) 收款金额
from (select distinct 项目编号 from 收款表 union select distinct 项目编号 from 付款表 ) x,收款表 s,付款表 f
where x.项目编号=s.项目编号 and x.项目编号=f.项目编号
项目编号 付款次数 付款金额 收款次数 收款金额;
1 2 20.00 2 20.00
1 3 30.00 2 20.00
1 (NULL) (NULL) 1 10.00
(SELECT 付款次数 FROM 付款表 WHERE 项目编号=a.项目编号) AS 付款次数,
(SELECT 付款金额 FROM 付款表 WHERE 项目编号=a.项目编号) AS 付款金额,
(SELECT 收款次数 FROM 收款表 WHERE 项目编号=a.项目编号) AS 收款次数
(SELECT 收款金额 FROM 收款表 WHERE 项目编号=a.项目编号) AS 收款金额
FROM 项目表 a GROUP BY a.项目编号
(SELECT 收款次数 FROM 收款表 WHERE 项目编号=a.项目编号) AS 收款次数,//加个逗号
from 收款表 LEFT OUTER JOIN 付款表
on 收款表.项目编号=付款表.项目编号 AND 收款表.付款次数=付款表.收款次数
WHERE 收款表.项目编号 in(
select 项目编号 from (
select 项目编号,count(*) a,0 b from 收款表 group by 项目编号
union
select 项目编号,0 a,count(*) b from 付款表 group by 项目编号) aa
where aa.a>=aa.b)
union
select 收款表.项目编号,付款次数,付款金额,收款次数,收款金额
from 付款表 LEFT OUTER JOIN 收款表
on 收款表.项目编号=付款表.项目编号 AND 收款表.付款次数=付款表.收款次数
WHERE 收款表.项目编号 in(
select 项目编号 from (
select 项目编号,count(*) a,0 b from 收款表 group by 项目编号
union
select 项目编号,0 a,count(*) b from 付款表 group by 项目编号) aa
where aa.a<aa.b)