首页 新闻 会员 周边 捐助

求一条SQL语句写法(单表分组统计)

0
悬赏园豆:5 [已解决问题] 解决于 2014-09-04 14:39

  我简单点描述:一个合同表 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)

不知道我的描述是否清楚,急用,谢谢!

风醉的主页 风醉 | 小虾三级 | 园豆:1197
提问于:2014-09-04 14:27
< >
分享
最佳答案
0

貌似没办法用简单语句解决,建议使用临时表达成目的。

收获园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-09-04 14:37

额,用临时表 UNION ?额,非常感谢

风醉 | 园豆:1197 (小虾三级) | 2014-09-04 14:39

@许爱生活: 不是简单的union,直接把数据插入到临时表中,统计结果也一样。

或者,还可以建立一个余额表,不过,这样导致了数据冗余。

519740105 | 园豆:5810 (大侠五级) | 2014-09-04 14:41

@许爱生活: 

 

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 | 园豆:5810 (大侠五级) | 2014-09-04 14:49

@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

查询结果

风醉 | 园豆:1197 (小虾三级) | 2014-09-04 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册