我简单点描述:一个合同表 tb_contract(合同编号,合同金额),一个合同挂接项目表 tb_contract2project(合同编号,项目编号,项目分摊合同的金额),一对多关系,一个合同下面会挂多个项目,两表查询语句和表结构如下图:
select rec_no as contract_no,contract_amount from tb_contract select contract_no,project_no,contract_rateFee from tb_contract2project
我需要查询到对于每个合同编号新增一组,显示这个合同还有多少金额没分配完,即
contract_no project_no contract_rateFee
111 1112 金额A
111 1113 金额B
111 未分摊金额 contract_amount-( 金额A+金额B)
不知道我的描述是否清楚,急用,谢谢!
貌似没办法用简单语句解决,建议使用临时表达成目的。
额,用临时表 UNION ?额,非常感谢
@许爱生活: 不是简单的union,直接把数据插入到临时表中,统计结果也一样。
或者,还可以建立一个余额表,不过,这样导致了数据冗余。
@许爱生活:
select * from ( select contract_no, project_no, contract_ratefee from tb_contract2project union select contract_no, '未分摊金额' as project_no, (contract_amount - (select sum(contrace_rateFee) from tb_contract2project where contract_no = tb_contract.contract_no)) as contract_ratefee from tb_contract )
以上代码试试看。应该能解决。
@519740105: good,没用group by 就达到了分组目的,学习了,经测试可用,本身环境比这复杂,套用中,非常感谢
select * from ( select contract_no, project_no, contract_ratefee from tb_contract2project union select rec_no, '0' as project_no, (contract_amount - (select sum(contract_rateFee) from tb_contract2project where contract_no = tb_contract.rec_no)) as contract_ratefee from tb_contract )A order by contract_no desc,project_no desc
查询结果