就是做了半天取到的还是当前月的,取不到上一个月的
价格基数是活的,意思是当前价格基数ID为了,那上一个月的ID为3,取的是价格基数ID为3对应的数值

解决方案 »

  1.   

    就是做了半天取到的还是当前月的,取不到上一个月的 
    价格基数是活的,意思是当前价格基数ID为4,那上一个月的ID为3,取的是价格基数ID为3对应的数值
      

  2.   

    表一:T_工程概况 
    列 id(自增), 价格1,价格2, 价格基数id,价格基数 
        1        500    300        4        3月 
    表二:T_价格基数(上一个表中的值是通过它的下拉框来选择的) 
    列 id(自增),价格基数 
        1        3月 
        2        4月 
        4        5月 
        5        6月 
        8        7月 
    视图一:V_工程概况 
    列 id  价格1,价格2,价格3,价格4 
    条件:视图中的价格3=价格1除以上一个月的价格1,T_价格基数可以修改(因为表中的ID是自增,现在都不挨着了,可以加一列序号来显示他们的顺序),价格4为价格2除以价格3 
          但是要求算出来的值必须是一列,必须用视图来显示 
    要求:当上一月的价格1不存在时(也就是第一次输入时),判断下,当不存在时价格3为零 
          数据必须放在一行上
      

  3.   

    表一:T_工程概况 
    列 id(自增), 价格1,价格2, 价格基数id
        1        500    300        5           
        2        600    800        8           
    表二:T_价格基数(上一个表中的值是通过它的下拉框来选择的) 
    列 id(自增),价格基数 ,序列数
        1        3月         1
        2        4月         2
        4        5月         3
        5        6月         4
        8        7月         5
    视图一:V_工程概况 
     列 id  价格1,价格2,价格3,价格4 
    条件:视图中的价格3=价格1除以上一个月的价格1,T_价格基数可以修改(因为表中的ID是自增,现在都不挨着了,可以加一列序号来显示他们的顺序),价格4为价格2除以价格3 
          但是要求算出来的值必须是一列,必须用视图来显示 
    要求:当上一月的价格1不存在时(也就是第一次输入时),判断下,当不存在时价格3为零 
          数据必须放在一行上
    最后的数据如下:列 id(自增), 价格1,价格2, 价格基数id,价格基数,   价格3,    价格4
                          1        500    300        5           6月        0          0
                    
                          2        600    800        8           7月    600/500=1.2   800/1.2=650
     
      

  4.   

    表一:T_工程概况 
    列 id(自增), 价格1,价格2, 价格基数id
        1        500    300        5           
        2        600    800        8           
    表二:T_价格基数(上一个表中的值是通过它的下拉框来选择的) 
    列 id(自增),价格基数 ,序列数
        1        3月         1
        2        4月         2
        4        5月         3
        5        6月         4
        8        7月         5
    视图一:V_工程概况 
     列 id  价格1,价格2,价格3,价格4 
    条件:视图中的价格3=价格1除以上一个月的价格1,T_价格基数可以修改(因为表中的ID是自增,现在都不挨着了,可以加一列序号来显示他们的顺序),价格4为价格2除以价格3 
          但是要求算出来的值必须是一列,必须用视图来显示 
    要求:当上一月的价格1不存在时(也就是第一次输入时),判断下,当不存在时价格3为零 
          数据必须放在一行上
    最后的数据如下:列 id(自增), 价格1,价格2, 价格基数id,价格基数,   价格3,      价格4
                          1     500   300       5        6月        0             0
                    
                          2    600    800       8         7月    600/500=1.2   800/1.2=650
     
      

  5.   

    declare @tb1 table(ID int identity(1,1) primary key, price1 int, price2 int, baseID int)
    insert into @tb1
    select 500,600,5
    union
    select 600,800,8
    declare @tb2 table(baseID int  primary key, base nvarchar(10))
    insert into @tb2
    select 1,'3月'
    union
    select 2,'4月'
    union
    select 4,'5月'
    union
    select 5,'6月'
    union
    select 8,'7月'
    ;with c as
    (
    select a.*, b.base from @tb1 a
    left join @tb2 b on a.baseID=b.baseID
    )
    select *, price4=cast(price2*1.0/price3 as decimal(8,2)) from 
    (
    select *, price3=(select cast(x.price1*1.0/price1 as decimal(8,2)) from c 
    where cast(left(x.base,1) as int)-left(base,1)=1)
    from c x
    )m