表结构 代理商名称 办事处 修正后的代理商名称 更改时间 a a1 aa 2012-03-05 a a1 aaa 2013-01-01 a a1 b 2013-03-04 a a1 bb 2013-03-15 a a1 bbb 2012-05-05 a a1 ccc 2013-04-01 我想要的结果: 代理商名称 修正后的代理商名称 更改时间 所扣分数 a aa 2012-03-05 5 a aaa 2013-01-01 5 a b 2013-03-04 5 a bb 2013-03-15 5
drop table csdn1
go
create table csdn1
(
代理商名称 varchar(50),
办事处 varchar(50),
修正后的代理商名称 varchar(50),
更改时间 datetime,
所扣分数 int
)
go
insert into csdn1 values('a','a1','aa','2012-03-05',5)
insert into csdn1 values('a','a1','aaa','2013-01-01',5)
insert into csdn1 values('a','a1','b',' 2013-03-04',5)
insert into csdn1 values('a','a1','bb','2013-03-15',5)
insert into csdn1 values('a','a1','bbb',' 2012-05-05',5)
insert into csdn1 values('a','a1','cc',' 2013-04-01',5)
go
select * from csdn1
go
drop table newtable
go
--把内容复制到新表newtable 中
select * into newtable from csdn1
--修改后更改时间
update csdn1
set 更改时间 = getdate() where 修正后的代理商名称 = 'aa'
--修改所扣分数
update csdn1
set
csdn1.所扣分数 =
case when csdn1.所扣分数 >0 then csdn1.所扣分数-1 else 0
end
from newtable
where csdn1.代理商名称 = newtable.代理商名称
and csdn1.修正后的代理商名称 = newtable.修正后的代理商名称
and csdn1.更改时间 <> newtable.更改时间
select 代理商名称,修正后的代理商名称,更改时间,所扣分数=
(select case when count(distinct b.修正后的代理商名称)<5 then count(distinct b.修正后的代理商名称) else 5 end from tb b where a.代理商名称=b.代理商名称)
from tb a