Access数据库中结构是这样的:
ID    Time        XX
1   1999-12-1      1
2   2000-12-1      3
3   2001-12-1      8
4   2001-3-1       9
5   2001-6-1      13
6   2002-12-1     18
..  .........      ...现在要计算相邻两年中对应的XX之和,例如1999-12-1的XX加上2000-12-1的XX,
2000-12-1的XX加上2001-12-1的XX
2001-12-1的XX 加2002-12-1的XX,依此类推..............

解决方案 »

  1.   

    你先读取出所有的年份。
    然后做一次循环,读取2年内的xx即可。access可以使用DateDiff
      

  2.   

    select a.xx+b.xx from tablename a,tablename b
    where a.id=b.id-1
      

  3.   

    没仔细看,应该是这样的
    select a.xx+b.xx from tablename a,tablename b
    where a.time=DateAdd(year,1,b.time)
      

  4.   

    select a.xx+b.xx from tablename a,tablename b
    where convert(varchar(4),a.Time,121) = convert(varchar(4),b.Time,121) -1
      

  5.   

    我觉得 ncjcz() 说的应该可行,不过SELECT的字段部分应该至少加上一个日期字段,否则你得到了和也不知道该和是由哪两年某月的数值相加而得的。另外WHERE部分我觉得应该用DateDiff比较好。
      

  6.   

    取出来,存放到datatable中做循环计算。
      

  7.   

    select year(time),sum(xx) from table group by year(time)
    这是查询一年内的总和.
    1   1999      *
    2   2000      *
    3   2001      *试试这样行不行.select sum(xx) from table a left join table b on 
    month(b.time)<12 and year(a.time)-year(b.time)=1
      

  8.   

    select a.xx+b.xx from tablename a,tablename b
    where a.time=DateAdd(year,1,b.time)
    ---------------------------------------
    你的意思是要建两个表吗?我现在只在一个表下要做这样的计算
    同时需要对所有的数据进行计算,还要选出不是年份的那些,如:
    4   2001-3-1       9
    5   2001-6-1      13
      

  9.   

    tablename a,tablename b只是一个表啊
    另,什么叫“不是年份的那些”?
      

  10.   

    一个sql就可以解决:
    SELECT a.Time ,b.Time,a.xx+b.xx 
    FROM Table1 as a,Table1 as b
    WHERE DateDiff(year,b.Time,a.Time=1) and DatePart(month,a.Time)=12
     a和b的意思不是要建两张表,而是同一张表,用a和b作为它的别称
      

  11.   

    左连即可,左连的条件是时间比现在少12个月
    select a.time,a.xx+isnull(b.xx,0)
    from table1 a
    left outer join table1 b on datediff(mm,b.time,a.time)=12
      

  12.   

    SELECT a.Time ,b.Time,a.xx+b.xx 
    FROM Table1 as a,Table1 as b
    WHERE DateDiff(year,b.Time,a.Time=1) and DatePart(month,a.Time)=12这个想法不错,我现在数据表名是Info,就这样:
    SELECT a.Time ,b.Time,a.xx+b.xx 
    FROM Info as a,Info as b
    WHERE DateDiff(year,b.Time,a.Time=1) and DatePart(month,a.Time)=12
    对不对?