来一个简单的SQL查询。大家帮忙看看 ( 积分: 100 )

  • 主题发起人 主题发起人 小虾米爱吃鱼
  • 开始时间 开始时间

小虾米爱吃鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
三个表:T1,T2,T3
其中T1关系:人员帐号(ZH),消费金额(JE),消费时间(DT), --记录人员的消费流水帐
T2:人员帐号(ZH),原部门编号(DI),部门调动时间(DT) --记录人员的部门调动情况
T3:人员帐号(ZH),部门编号(DI),姓名(XM).... --保存最新的人员信息

注意:T2中,同一个人可能出现多次人员调动,每次调动记录下原部门的ID号,同时更新T3表中的部门编号

现在需要查:
1、某段时间内各部门的消费总额,
2、某段时间内各部门的消费明细,

请大家给看看。
 
你这没有部门信息表?
 
1.select DI, sum(JE) from T1, T2 where T1.ZH=T2.Zh and DT between %s and %s Group By DI
2.select DI, JE from T1, T2 where T1.ZH=T2.Zh and DT between %s and %s Group By DI
以上仅供参考
 
数据库搭建的不好. 以上写法比较牵强
 
楼上的,这两句不能执行吧?
 
请问:slf0205,
那你这样的话是不是没有调动的人员的消费记就查不来了?
因为T2表只记录调动的信息。
 
请问,人员新增时,在T2表中有记录吗?
 
在表T1中加一个部门编号就好了.
按现在的情况进行统计不很准确.
当前部门的消费含有变动人员的消费.如果某个人在同一部门变动多次,统计起来就更不易了.
 
回答dcx0026,
人员新增时,在T2表中无记录
T2表只记录人员调动情况
 
依ww20000309的方法修改一下不行吗?
他的办法挺好的。改了后,sql很好写。

不然Sql写出来有些复杂。
 
在能不改库结构的时候尽量不改库结构。不然程序变动会很大!
 
你们说这样行不行!弄个临时表,先查出T1表中每条记录对应的部门号,然后再统计查询
,那这个临时表又怎么查呢?
 
你这样记录的员工部门号并不准确啊,假如这个员工有部门调动,那他的消费金额肯定需要根据你查询的时间段去细分部门了。涉及到很多种可能,写个存储过程吧。可以先查询时间段内没有部门调动的员工消费信息,再查询有异动的员工消费信息,再进行组合。
 
后退
顶部