回 帖 发 新 帖 刷新版面

主题:求助!关于vfp 应该叫做是分级汇总的问题!谢谢了

项目                代码                              金额
山西                1                                 40.0000
太原                11                                 0.0000
长治                12                                40.0000
晋城                13                                 0.0000
晋中                14                                 0.0000
河北                2                                 20.0000
石家庄              21                                 0.0000
保定                22                                 0.0000
北京                3                                  20.0000
海淀区              31                                 0.0000
武乡                121                               10.0000
朝阳区              33                                 0.0000
长治县              122                               10.0000
长子县              123                               10.0000
郊区                124                               10.0000

这个表分三级  代码是一位数的是一级  两位数的是二级 三位数的是三级 
然后根据三级的金额算出二级的金额 二级的金额算出一级的金额 用程序得出 
我现在写的代码有很大的缺陷,现在找不吃问题在哪?请各位高手帮忙指教!
附:
Set Talk Off
Clear
Use In Select("xm")
Use xm
Store 0 To a,b
Index On 代码 To 代码
Go Bottom
Do While.Not.Bof()
Do case
    case Len(Trim(代码))=3
         a=a+xm.金额
    case Len(Trim(代码))=2
         b=b+xm.金额
        * If Like(代码,Left(代码,2))
         replace 金额 With a
        * endif 
         Store 0 To a
    case Len(Trim(代码))=1
         *If  Left(代码,1)==xm.代码.and.len(Trim(代码)) =1
             replace 金额 With b
         *Else
              Messagebox(b)
         *endif  
         Store 0 To b           
    Endcase
*!*         If Left(代码,2) =xm.代码.and.len(Trim(代码)) =2
*!*                  
*!*               Else
*!*                  Messagebox(代码)
*!*         Endif
*!*         
*!*                 
*!*        
    Skip -1
Enddo
browse
Use
Set Talk On

回复列表 (共2个回复)

沙发

select a.dm,a.xm,b.je from xm a inner join (
select dm,sum(je) as je from (select substring(convert(varchar,dm),1,1) as dm,je from xm where len(dm)>=1) a group by dm
union all
select dm,sum(je) as je from (select substring(convert(varchar,dm),1,2) as dm,je from xm where len(dm)>=2) a group by dm
union all
select dm,sum(je) as je from (select substring(convert(varchar,dm),1,3) as dm,je from xm where len(dm)>=3) a group by dm
)b on a.dm=b.dm order by a.dm,a.xm,b.je

dm          xm           je                                       
----------- -----------  ---------------------- 
1           山西         90.00
2           河北         30.00
3           北京         30.00
11          太原         10.00
12          长治         50.00
13          晋城         10.00
14          晋中         10.00
21          石家庄        10.00
22          保定         10.00
31          海淀区        10.00
33          朝阳区        10.00
121         武乡         10.00
122         长治县        10.00
123         长子县        10.00
124         郊区         10.00

(所影响的行数为 15 行)

板凳

select 项目,代码,金额,substr(代码,1,1) a,substr(代码,1,2) b,Len(Trim(代码)) c into curs aa from xm order by 代码

select 代码,sum(金额),c from aa where  group by c

先根据要求取出代码1位,2位3位的代码建个零时表aa ,你自己试试看看

我来回复

您尚未登录,请登录后再回复。点此登录或注册