首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

继续昨天单表操作的有关问题

2013-08-01 
继续昨天单表操作的问题CREATE TABLE #Ac(uid int IDENTITY, a varchar(5),b varchar(6),c varchar(6))INS

继续昨天单表操作的问题

CREATE TABLE #Ac(uid int IDENTITY, a varchar(5),b varchar(6),c varchar(6))   
INSERT INTO #Ac (a,b,c) 
select 'A158','100','AAAA' UNION ALL 
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A159','200','AAAA' UNION ALL
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A168','150','AAAA' UNION ALL
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A178','345','AAAA' 
昨天我写的是只更新一列,而实际我上有很多列需要更新,有10多列,又不知道怎么处理!
[解决办法]

select uid,
a=(select case when a='' then (select MAX(a) from #ac where a.uid>uid) else a end),
b=(select case when b='' then (select MAX(b) from #ac where a.uid>uid) else b end),
c from #ac a

写个查询语句吧,修改的话照着改就行
[解决办法]
CREATE TABLE #Ac(uid int IDENTITY, a varchar(5),b varchar(6),c varchar(6))   
INSERT INTO #Ac (a,b,c) 
select 'A158','100','AAAA' UNION ALL 
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A159','200','AAAA' UNION ALL
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A168','150','AAAA' UNION ALL
select '','','AABBA' UNION ALL
select '','','AAXA' UNION ALL
select '','','AACA' UNION ALL
select 'A178','345','AAAA' 

select *
from #Ac

update #Ac
set a=t2.a,b=t2.b
from #Ac t1
join
(
select uid


,a=(select max(a) from #Ac b where a.uid>b.uid)
,b=(select max(b) from #Ac b where a.uid>b.uid)
from #Ac a
where a='' and b=''
group by uid
) t2
on t1.uid=t2.uid

select *
from #Ac

热点排行