日期:2014-05-18  浏览次数:20636 次

两个表中的数据如何统计?急
A表   (基础信息表)
LH               LHSM     SL
1001           A           10
10011059   B           10
1002301     C           10
10011024   D           20
---             --         --
B表     (类别说明表)
LHLB           LBSM      
1001           A1
1002           A2
100110       A3
-----         ---

统计的结果是:
LH                         LBSM           SL
1001                     A1               10     --注意不要把10011059   与10011024   统计成同一类
1002                     A2               10
100110                 A3               30       --即   10011059   与10011024   可以统计归一类

即要求   根据B表中的   LHLB(料号类别)   统计A表中的数据,尤其是要注意   '1001 '与 '100110 '   是两个不同的类别,统计时一定不能把A表中的LH   '1001 '与 '100110 '统计成一类,这只是举个例,类别会有很多

------解决方案--------------------
select *,(select sum(SL) from a y where LH like x.LHLB+ '% ' and not exists
(select 1 from b z where y.lh like z.LHLB+ '% ' and len(z.LHLB)> len(x.LHLB))
) as SL
from b x

------解决方案--------------------
select b.LBLB,b.LBSM,sum(a.SL) as 'SL '
from A表 a inner join B表 b on left(a.LH,len(b.LHLB)=b.LHLB
group by b.LHLB,b.LBSM
order by b.LBSM

------解决方案--------------------
select b.LHLB as LH,
b.LBSM,
(select sum(SL) from A表 where left(LH,len(b.LHLB)) = b.LHLB and not exists
(select 1 from B表 c where left(LH,len(c.LHLB))=c.LHLB and len(c.LHLB)> len(b.LHLB)) ) as SL
from B表 b
--结果:
LH LBSM SL
-------------------- -------------------- -----------
1001 A1 10
1002 A2 10
100110 A3 30