捡分罗!简单的SQL问题!(50分)

  • 主题发起人 主题发起人 qqzzhh
  • 开始时间 开始时间
Q

qqzzhh

Unregistered / Unconfirmed
GUEST, unregistred user!
1.假设有一个表有二个列:col1,col2 当每条记录的col1相同时,就将col2相加,变成一
记录。
 
Select Col1,Sum(Col2) Col2 from 表 group by col1
 
来晚了,楼上说得没错
 
上面的只是显示而已,实际库里并没有变化,要写个存储过程。
每增加一条记录触发一下。
 
试试创建一个Insert触发器:
create trigger UpdateRecord on table1
for insert
as
declare @col1 varchar(50)
declare @col2 int
select @col1=col1 from inserted
if (select count(*) from table1 where col1=@col1>0
update table1 set col2=col2+@col2 where col1=@col1
 
liuyang说的没错,在存储过程中,当col1的值相同时,取出原数据库中的col2值加上刚
才的col2的值后,在替换原数据库中的col2的值既可。
 
用存储过程好了。我做了一个,仅供参考
t3表两个字段name char 10,money int
存储过程如下
CREATE PROCEDURE t3in
@name nchar(10),
@money int
AS

declare @tmpmoney int

declare cur cursor local for
select money from t3 where name = @name

open cur
fetch next from cur into @tmpmoney

if @@fetch_status<>-1
begin
select @money = @money + @tmpmoney
delete from t3 where name = @name
insert into t3 (name,money) values (@name,@money)
end

close cur
deallocate cur

执行添加如下调用exec t3in '1',20
和你想要的效果一样,就是麻烦了点,不知道哪位大侠有更好的办法
 
来晚了,都不错,写一个存储过程就OK!但不知何种数据?支持吗?
可以先建个临时表(col1,col2)
Insert into 临时表
Select Col1,Sum(Col2) Col2 from 表 group by col1
如果表不要老的数据
则 delete from 表
再 Insert into 表 select * from 表
最后drop table 临时表
 
还有一个小问题:
表内容如下:
co1 col2
1 1
1 2
1 3
2 4
2 5
3 6
3 7
怎样求出列col1中不同的记录数,如上面就为3,马上给分!
 
在DELPHI里用一个QUERY如下写
select co1 form table group by co1
执行一下,然后query.recordcout属性就是你想要的东西
 
或者select DISTINCT co1 from table也可以
 
to mat:
不能在DELPHI中,一定要在SELECT中搞定!
 
TO :chelon
这个触发器运行后,COL2的值为空,如果把select @col1=col1 from inserted
去掉后,则没有达到效果,和INSERT INTO TABLE1 VALUES(‘AAA’,‘111’)一样,
没有累加,记录还是增加!
 
这样也可以
select count(distict col1) from table1 group by col1;
 
问题已解决,多谢各位!
 
多人接受答案了。
 
后退
顶部