合同表
合同编号 客户名称 合同金额 签定日期
111 好好好 500 2003-12-10收款登记表
合同编号 客户名称 收款金额 收款日期
111 好好好 300 2003-12-11
111 好好好 100 2003-12-12开出发票登记表
合同编号 客户名称 开票金额 开票日期
111 好好好 300 2003-12-11我现在通过一个DBGrid来显示报表,DBGrid里有这么多的列(Columus)
合同编号 客户名称 应收金额 已收金额 未收金额 已开发票(金额) 待开发票(金额)
请问怎么实现?最能够详细点,把代码和SQL也写一下,
合同编号 客户名称 合同金额 签定日期
111 好好好 500 2003-12-10收款登记表
合同编号 客户名称 收款金额 收款日期
111 好好好 300 2003-12-11
111 好好好 100 2003-12-12开出发票登记表
合同编号 客户名称 开票金额 开票日期
111 好好好 300 2003-12-11我现在通过一个DBGrid来显示报表,DBGrid里有这么多的列(Columus)
合同编号 客户名称 应收金额 已收金额 未收金额 已开发票(金额) 待开发票(金额)
请问怎么实现?最能够详细点,把代码和SQL也写一下,
解决方案 »
- 手手问题:两个数据库做一个表的数据同步
- 我发现了本科的“计算机科学与技术专业”的课程超级难!!!!!!!!!!
- 关于listview里的item的双击问题!处男第一问!呵呵,只能给100分了
- 有关DBGridEh回车跳格与换行问题(当设置ReadOnly后出问题)。
- 又没有做过direct sound 编程的高手阿重金合作
- 如何实现两个Listbox同步.高分悬赏
- 急,一个菜鸟级的问题!
- 对"精灵窗体"有兴趣的朋友进来聊聊,交流一下... ^_^
- 请问题在win2000p下用delphi6连sql server 2000 personal要加什么补丁?
- 300分!急急急!各位大虾本人急需作复杂报表的控件最好有源码,分不是问题!!
- 为什么.exe的图标的选项被灰掉?
- delphi写的数据库应用程序打包的问题
query.sql.clear;
query.sql.add:='select 合同编号 ,客户名称 from 合同表';
然后在query中建立四个计算字段,分别对应已收金额 , 未收金额, 已开发票(金额), 待开发票(金额)。
最后在query的onCalcFields()事件中计算出这几个金额就可以了。
最后在query的onCalcFields()事件中计算出这几个金额就可以了。"这个不知道怎么做?
sum(case when case a='应收金额' then je end) as '应收金额',
sum(case when case a='已收金额'then je end) as '已收金额',
sum(case when case a='開票金额'then je end) as '開票金额'
sum(case when case a='待开发票'then je end) as '待开发票(金额)'
from
(select 合同编号 , 客户名称,合同金额 as je,a='应收金额'
from 合同表
union all
select 合同编号 , 客户名称,sum(收款金额) as je,a='已收金额'
from 收款登记表
group by 合同编号 , 客户名称
union all
select 合同编号 , 客户名称,sum(开票金额) as je,a='開票金额'
from 开出发票登记表
group by 合同编号 , 客户名称
union all
select 合同编号 , 客户名称,sum(je) as je,a='待开发票'
from
(select 合同编号 , 客户名称,收款金额 as je,a='已收金额'
from 收款登记表
union all
select 合同编号 , 客户名称,-开票金额 as je,a='開票金额'
from 开出发票登记表
) as b) as table
group by 合同编号 , 客户名称另外,你還可以用視圖實現,還有就是存儲過程