日期:2014-05-17  浏览次数:20647 次

求助 一些sql的小问题


CREATE TABLE 超市交易报表
 (交易时间 smalldatetime default( getdate()),
  交易号 char (6),
  商品号 tinyint,
  商品单价 smallmoney,
  数量 smallint,
  PRIMARY KEY(交易时间,交易号,商品号)
)



CREATE TABLE 日报表
 (时间 smalldatetime default( getdate()),
  金额 smallint 
)

CREATE TABLE 月报表
 (时间 smalldatetime default( getdate()),
  金额 smallint 
)

CREATE TABLE 年报表
 (时间 smalldatetime default( getdate()),
  金额 smallint 
)



create trigger qwer_tri
  on 超市交易报表
 for insert,update,delete
 as
 begin
 insert into 日报表(时间,金额) select convert(varchar(10),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(10),交易时间,120)
 insert into 月报表(时间,金额) select convert(varchar(7),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(7),交易时间,120)
 insert into 年报表(时间,金额) select convert(varchar(4),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(4),交易时间,120)

 end 






INSERT INTO 超市交易报表 (交易号,商品号,商品单价,数量)
 values ('000001','2',$32,'3')
------解决方案--------------------
CREATE TABLE 超市交易报表 
 (交易时间 smalldatetime default( getdate()),
  交易号 char (6),
  商品号 tinyint,
  商品单价 smallmoney,
  数量 smallint,
  PRIMARY KEY(交易时间,交易号,商品号)
)
go

CREATE TABLE 日报表 
 (时间 varchar(10),
  金额 smallint 
)

CREATE TABLE 月报表 
 (时间 varchar(7),
  金额 smallint 
)

CREATE TABLE 年报表 
 (时间 varchar(4),
  金额 smallint 
)
go


create trigger qwer_tri
  on 超市交易报表
 for insert,update,delete
 as
 begin
 insert into 日报表(时间,金额) select convert(varchar(10),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(10),交易时间,120)
 insert into 月报表(时间,金额) select convert(varchar(7),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(7),交易时间,120)
 insert into 年报表(时间,金额) select convert(varchar(4),交易时间,120),sum(商品单价*数量) from 超市交易报表 group by convert(varchar(4),交易时间,120)

 end 
go
insert into 超市交易报表
select convert(smalldatetime,getdate()),'asd',5,23.3,3
go
select * from 日报表
select * from 月报表
select * from 年报表
/*
时间         金额
---------- ------
2012-12-02 70

(1 行受影响)

时间      金额
------- ------
2012-12 70

(1 行受影响)

时间   金额
---- ------
2012 70

(1 行受影响)
*/

go
drop table 超市交易报表,日报表,月报表,年报表