怎样用触发器统计表?(0分)

  • 主题发起人 主题发起人 laskes
  • 开始时间 开始时间
L

laskes

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在做的是日报表,我怎么能通过触发器计算通过触发器算出来的值A1,A2差?
 
[purple]你所说的问题应该是实现不了的。[/purple]
 
怎么样?
 
[blue]呵呵。[/blue]
 
问题不明确啊?你是想用触发器生成报表还是计算?!
 
当然是计算了,我已经用触发器算出了累计值A1和A2, 但我不知道怎样再用触发器算出A1-A2的值?[:(]
 
你是分别通过两次触发器算出A1、A2的值吗?
 
能把问题说的详细一点吗,不过你问的肯定是可以的
 
我的问题是, 我现在做的是日报表,需要对每天的产量值做一个累计, 那么累计值A1,A2就可以分别通过触发器把当天的值和前一天的累计值加起来得到(当然A1,A2是一次性触发的)。问题是我怎么通过触发器不但把A1,A2的值得出来,还要把A1,A2的差算出来?
 
CREATE TRIGGER insert_f_z_scjyrbb ON f_z_scjyrbb
FOR INSERT
AS
update f_z_scjyrbb set f_z_scjyrbb.lj1=(CONVERT(float,f_z_scjyrbb.pd)+convert(float,(select lj1 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj2=(CONVERT(float,f_z_scjyrbb.rc1)+convert(float,(select lj2 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)
这是我现在写的触发器,我不知道怎么把累计值lj1,和累计值lj2的差求出来。
 
CREATE TRIGGER insert_f_z_scjyrbb ON f_z_scjyrbb
FOR insert
AS
declare @lj1 float, @lj2 float, @zj float
begin

select @lj1 = (CONVERT(float,f_z_scjyrbb.pd)+convert(float,(select lj1 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted))))

select @lj2 = (CONVERT(float,f_z_scjyrbb.rc1)+convert(float,(select lj2 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted))))
update f_z_scjyrbb set f_z_scjyrbb.lj1 = @lj1 where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj2 = @lj2 where id = (select inserted.id from inserted)
select @zj= @lj2 - @lj1
update f_z_scjyrbb set f_z_scjyrbb.zj = @zj where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj3=(CONVERT(float,f_z_scjyrbb.rc2)+convert(float,(select lj3 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj4=(CONVERT(float,f_z_scjyrbb.rc3)+convert(float,(select lj4 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj5=(CONVERT(float,f_z_scjyrbb.rc4)+convert(float,(select lj5 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)
update f_z_scjyrbb set f_z_scjyrbb.lj6=(CONVERT(float,f_z_scjyrbb.rc5)+convert(float,(select lj6 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted)))) where id = (select inserted.id from inserted)

end

我改后的程序如上,怎么还是出现错误"列前缀'f_z_scjyrbb'与查询中所用的表名或别名不匹配。
"




 
select @lj1 = (CONVERT(float,f_z_scjyrbb.pd)+convert(float,(select lj1 from f_z_scjyrbb where CONVERT(datetime, n_date) =convert(datetime,(select inserted.n_date from inserted))-1 and pu = (select inserted.pu from inserted))))
这样给变量@lj1赋值不可以么?
 

Similar threads

回复
0
查看
825
不得闲
回复
0
查看
885
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部