读书人

求教这个语句要如何写。

发布时间: 2013-04-20 19:43:01 作者: rapoo

求教这个语句要怎么写。。。
表结构
代理商名称 办事处 修正后的代理商名称 更改时间
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
a bbb 2012-05-05 5
a ccc 2013-04-01 5

所扣分数指的是当代理商有过一次修正的记录后,将会扣除1分,每个代理商封顶5分,或者将所扣分数都统一成最终所扣的分数,我想做成这样的效果不知道行不行,求大神解迷。。
[解决办法]
怎么判断是修正过的?
[解决办法]
你呀你,问题都说不清楚,还有一张表呢?
[解决办法]

select 代理商名称,修正后的代理商名称,更改时间,所扣分数=
(select case when count(distinct b.修正后的代理商名称)<5 then count(distinct b.修正后的代理商名称) else 5 end from tb b where a.代理商名称=b.代理商名称)
from tb a


求教这个语句要如何写。
[解决办法]
修改语句这样写
update tb1 set [修改代理商名称] = 'dd' ,[修改日期] = getdate(),
[所扣分数] = case when [所扣分数] <5 then [所扣分数] +1 else 5 end where [代理商名称] = 'a'
[解决办法]
你这个应该还有一张原始表吧 不然也不知道修正过
[解决办法]
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.更改时间

读书人网 >SQL Server

热点推荐