你真的是百折不曲XXXX :) 怕你了,我的语句在SQL SERVER 中是对的,ACCESS中没有case when 有IIF,所以该语句在ACCESS中改成:
select max(idate) as idate,sum(iamount) as iamount,
      max(odate) as odate,sum(oamount) as oamount
from 
(select fdate,iif( status="I",fdate, null ) as idate,
      iif(status="I" ,amount,null ) as iamount,
      iif(status="O" ,fdate,null) as odate,
      iif(status="O" ,amount,null) as oamount
  from io)
t1
group by fdate
order by fdate试试?!为什么不早说是ACCESS呢?哎

解决方案 »

  1.   

    SELECT C.IDATE,C.IAMOUNT,D.ODATE,D.OAMOUNT FROM 
    (
    SELECT A.DATE AS IDATE,A.AMOUNT AS IAMOUNT,'' AS ODATE,'' AS OAMOUNT,A.DATE
    FROM TABLE1 AS A WHERE A.STATUS='I'
    ) C 
    FULL JOIN 
    (
    SELECT '' AS IDATE,'' AS IAMOUNT,B.DATE AS ODATE,B.AMOUNT AS OAMOUNT,B.DATE
    FROM TABLE1 AS B WHERE B.STATUS='O'
    ) D
    ON C.IDATE=D.ODATE
      

  2.   

    ACCESS不支持FULL JION。以下语句在ACCESS2000下调试通过,得到的结果完全符合题目的要求。select y.idate, y.iamount, z.odate, z.oamount
      from ((select distinct io_date from io) x
          left join
          (select distinct io_date as idate, sum(amount) as iamount from io where status = 'I' group by io_date) as y on x.io_date = y.idate)
          left join
          (select distinct io_date as odate, sum(amount) as oamount from io where status = 'O' group by io_date) as z on x.io_date = z.odate
      order by x.io_date