这多表的查询,而且业务逻辑又复杂,看懂都要半天.你应该给大概的SQL语句才好改

解决方案 »

  1.   

    select A.ID(中间可以自己加),B.ID from (select C.Name,D.name from (select E.Year,F.Year from (select * from 发票表) as F left join 物料表 as E on E.ID=F.ID(条件)) as D left join 公司表 on 条件) as B left join 发票清单表 on 条件  where
     Year(B.Date)=输入的年份 and Month(B.Date) in (开始月份,结束月份)我只是简单的写了一下,其中的表的顺序就要楼主自己去写了,基本上这样应该可以取出你所给定条件的数据,然后就可以打印了(个人意见,请高手指点)好运
      

  2.   

    to dama2003(孤独一生) ( ) 信誉:94 
    你的sql 并不能查询出 把 所有的月份 集成在 一条记录中的!!
      

  3.   

    唉,这种东西需要数据库的支持的像DB2 这种就支持Cube,倒是可以这样做的否则我要来个 千八百个月份,你想查出来,数据库还不支持一个View有这么多列呢所以能查出一个  dama2003  的结果就很好了剩下的事情楼主还是自己去填表吧
      

  4.   

    所以想要 一个不错 解决思路 
    这个问题 我想解决 倒不难 了不起 一个内嵌循环 不过要是 提高 速度 就有大问题了 
    另外 dama2003 是 什么呢
      

  5.   

    不复杂,用复合查询语句就可以了.select a.材料名称,a.厂家,a.计量单位,a.税率,b.* from table a , (select 关联的字段,sum(....) from table group by 月份 ) as bWhere a.field = b.field
      

  6.   

    我晕倒了 

    月份 是 并不是想象中 一个 between and 那么简单
    也就是 需要将每一个月份 数据汇总!!但是 不能把 所有的汇总在而已 而是 一月是一月的汇总  二月是二月的汇总
      

  7.   

    我想是典型的交叉表查询,结合select top 1 ... order by XXX desc,
    不知道是什么数据库,不同的数据库写法不一样。
    如果是SQL Server类似于:
    SELECT P1.*, (P1.Q1 + P1.Q2 + P1.Q3 + P1.Q4) AS YearTotal
    FROM (SELECT Year,
                 SUM(CASE P.Quarter WHEN 1 THEN P.Amount ELSE 0 END) AS Q1,
                 SUM(CASE P.Quarter WHEN 2 THEN P.Amount ELSE 0 END) AS Q2,
                 SUM(CASE P.Quarter WHEN 3 THEN P.Amount ELSE 0 END) AS Q3,
                 SUM(CASE P.Quarter WHEN 4 THEN P.Amount ELSE 0 END) AS Q4
         FROM Pivot AS P
         GROUP BY P.Year) AS P1
    如果是access本身就有向导来做。