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

sql server 视图平添一列

2013-09-06 
sql server 视图添加一列有个视图,想在视图中增加一列id,自动增长。原本视图数据是:city code广州 1111A深

sql server 视图添加一列
有个视图,想在视图中增加一列id,自动增长。原本视图数据是:

city code
广州 1111A
深圳 123A
厦门 159A

实现效果是:
id city code
1 广州 1111A
2 深圳 123A
3 厦门 159A

原来视图的脚本是:
if exists (select * from sys.objects where name ='test')
drop table test;
create table test (city varchar(10),code varchar(10)) 
insert into test  
select '广州','1111A' union all
select '深圳', '123A' union all 
select  '厦门', '159A'
if exists (select * from sys.objects where name ='vtest')
drop view vtest;
create view vtest as select * from test;

是想在建视图的时候添加一列,不是在基础表添加一列!!! sql?server 脚本 视图
[解决办法]


ALTER view [dbo].vtest
as
select id=ROW_NUMBER()over(order by getdate()),* from test

GO

[解决办法]
ALTER view vtest as select id=ROW_NUMBER() OVER(PARTITION BY GETDATE() ORDER BY city),city,code from test

[解决办法]
if exists (select * from sys.objects where name ='test')
drop table test;
GO

create table test (city varchar(10),code varchar(10)) 
insert into test  
select '广州','1111A' union all
select '深圳', '123A' union all 
select  '厦门', '159A'
GO

if exists (select * from sys.objects where name ='vtest')
drop view vtest;
GO
create view vtest as select id=ROW_NUMBER() OVER(ORDER BY GETDATE()),* from test;
GO


SELECT *FROM vtest
/*
idcitycode
1广州1111A
2深圳123A
3厦门159A
*/


[解决办法]
引用:
Quote: 引用:

ALTER view vtest as select id=ROW_NUMBER() OVER(PARTITION BY GETDATE() ORDER BY city),city,code from test
当数据量大的时候,我在原来是视图的上查询数据1000条数10s,但是加了id后的查询1000条数据用来1分钟!!!

所以说,一般建表,在没有合适主键的情况下,都会给表加一个自增列的主键。
像你这样的需求,没有什么高效的办法解决。给表加一列:
alter table tb
add id int not null identity(1,1)

[解决办法]
用row_number()就行

热点排行