又是SQL,请高手帮帮忙:(100分)

  • 主题发起人 主题发起人 microwave
  • 开始时间 开始时间
M

microwave

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个表:A,B。
A的结构为:
编号 日期1 日期2 品种 数量 顾员
1 02-7-20 02-8-26 AA 2 甲
2 02-7-19 02-8-29 BB 3 乙
3 02-6-20 02-8-28 CC 1 丙
4 02-8-21 02-8-30 BB 5 甲
5 02-7-20 02-8-29 AA 6 甲
6 02-7-20 02-8-29 CC 8 乙
......


B的结构为:
日期 编号
02-8-20 1
02-8-20 3
02-8-20 5
02-7-26 1
02-7-26 5
02-6-28 3
......


我想由此两表得到第三个统计表C:
C的结构为:
日期 品种AA 品种BB 品种CC
1 0 0 0
2 0 0 0
3 0 0 0
......
20 2 0 0
......
26 8 5 0
30 0 5 0



注:
C中:日期由表B“日期”得,但只要“日”,品种AA由A表中符合条件的记录相加而得,品种BB以此类推,
条件1:顾员=employee(输入后获得);
条件2:表B中那些编号与A中编号相同的记录中:日期1(表A)<=日期(表B)<=日期2(表A);

我列出的表C则是employee=甲的结果。

小弟用的是ADOquery连接ACCESS数据库。
不知如何写我才能得到此表C 请路过的诸位高人帮帮忙,
 
日期的1-30 无法得到,必须先建一个这样的表,
我用iif语句sum(iif())
 
那日期就从表B中得到:02-8-20 这样也可以,
 
要或的日期中的“日”只要用函数 day()即可,得到C表的SQL我在试验
 
slect b.日期,sum(iif(品种="aa",数量,0) as aa,
sum(iif(品种="bb",数量,0) as bb,
sum(iif(品种="cc",数量,0) as cc
from b ,a
where b.日期>a.日期1 and b.日期<a.日期2 and b.编号=a.编号 and a.雇员="甲"

 

Similar threads

D
回复
0
查看
753
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
659
DelphiTeacher的专栏
D
D
回复
0
查看
777
DelphiTeacher的专栏
D
D
回复
0
查看
653
DelphiTeacher的专栏
D
后退
顶部