none
合同表如何取到我需要的数据!? RRS feed

  • 问题

  • --有一个门面收租金表ContractTable,它包含下列字段:
    1.ContractNumber(合同号,nvarchar):主键
    2.Address(地址,nvarchar):
    3.LeaseDateFrom(合同起始日,Date)
    4.LeaseDateTo(合同终止日,Date):LeaseDateTo和LeaseDateFrom的时间差一般为1年或2年,也就是每次租1年或2年
    5.MonthRent(月租金,decimal)
    6.TypeOfPayment(交租方式,nvarchar)分为两种交租方式第一种:‘月末前预交’,要对方提前一个月交租,比如现在是11月,因为是‘预交’,所以我要收对方12月份的租金,这种很简单。第二种是‘季度末预交’,也就是3个月交一次租金(MonthRent*3),那么根据LeaseDateFrom(合同起始日)确定他每年哪几个月要交一个季度的租金。因此,‘季度末预交’要细化为三种情况,分别是‘季度末预交1、4、7、10’、‘季度末预交2、5、8、11’、‘季度末预交3、6、9、12’,后面的数字是表示对方应该在哪几个月交租。
    -------
      比如:有一份合同,它的LeaseDateFrom:2011-07-01,LeaseDateTo:2013-06-30,期限为两年,TypeOfPayment:季度末预交3、6、9、12(因为LeaseDateTo是2011-07-01,那么对方第一次应该在6月份交租,且每隔1个季度交一次,以后就是每年的3、6、9、12月交租)
      就以上例为例:我现在想预测一下2012年6月份这个合同是否到了收租时间,应该收多少!
    代码我是这样写的:
    select ContractNumber as 合同号,LeaseDateFrom as 合同起始日,LeaseDateTo as 合同终止日,TypeOfPayment as 交租方式,
    (case 
    when TypeOfPayment='月末预交' then MonthRent
    when TypeOfPayment='季度末预交1、4、7、10' then 0
    when TypeOfPayment='季度末预交2、5、8、11' then 0
    when TypeOfPayment='季度末预交3、6、9、12' then MonthRent*3
    else 0
    end) as 本月应收
    from ContractTable
    

    以上代码没有问题:但我想再添加几个功能:
    ----第一个功能,加上一栏表示该合同已经交到什么时候了,比如上例2012-6-30前预交了一个季度的租金,那么他已经交7、8、9月的租金(2012-7-1到2012-9-30),我想加上的一栏就是要显示他已经交到了‘2012-9-30’这个时间。
    -
    ----第二个功能,再加上一栏表示该合同从开始之日到2012年6月已经总共交了多少租金了。(这个要考虑TypeOfPayment,绝对不是简单的用2012
    月6减合同起始日再乘以MonthRent)
    -
    ----总而言之,我只给出一个时间变量,需要数据库为我提供相应的数据!
    -
    ----请问!该怎么完善呢?!

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!




    2011年11月5日 5:12

答案

  • 你好,

    如果要加上第一个功能:合同已经交到什么时候了,需要在table中加上一列来记录预交月租的时间。然后根据月租金来判断是月末预交还是季度末预交。

    第二个功能: 如果有了记录预交月租的时间,在查出合同号和地址的情况下,倒序排列预交时间那列,判断最后一次的租金是到什么时候的,再将符合条件的累加,算出总金额。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. This can be beneficial to other community members reading the thread.
    2011年11月10日 3:23
    版主

全部回复

  • DB will not give you result automatically, you have to write code yourself to get things done.
    2011年11月6日 0:11
  • 我把“智能”那两个字去掉了!

        我不知道怎么写好这段代码!并非要SQL智能提供数据!!!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!
    2011年11月6日 3:34
  • 你好,

    如果要加上第一个功能:合同已经交到什么时候了,需要在table中加上一列来记录预交月租的时间。然后根据月租金来判断是月末预交还是季度末预交。

    第二个功能: 如果有了记录预交月租的时间,在查出合同号和地址的情况下,倒序排列预交时间那列,判断最后一次的租金是到什么时候的,再将符合条件的累加,算出总金额。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help. This can be beneficial to other community members reading the thread.
    2011年11月10日 3:23
    版主