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

求select写法解决方案

2013-07-09 
求select写法有如下表:create table temp_order (col1 int,col2 varchar(10))insert into temp_order valu

求select写法
有如下表:
create table temp_order (col1 int,col2 varchar(10))
insert into temp_order values ('1','A')
insert into temp_order values ('3','B')
insert into temp_order values ('4','C')

如何得到
1 A
2
3 B
4 C

;with T as
(select min(t.col1) col1_start,max(t.col1) col1_end from temp_order as t),
T1 as
(
select col1_start from T
union all
select t1.col1_start+1 from T1 as t1 inner join T as t on t1.col1_start<t.col1_end
)
select t.col1_start as col1,isnull(a.col2,'') from T1 as t
left join temp_order as a on t.col1_start = a.col1
求select写法解决方案
[解决办法]
select b.number,isnull(a.col2,'')as col2
from
(
select * from master..spt_values where type='p' and number between 1 and (select MAX(col1) from temp_order)
)b left join
 temp_order a on a.col1 = b.number
[解决办法]



select top 100 id=identity(int,1,1) into # from sysobjects 



select t2.id col1,t1.col2 from # t2 left join temp_order t1
on t1.col1=t2.id
where id<=(select max(col1) from temp_order)
/*
col1        col2       
----------- ---------- 
1           A
2           NULL
3           B
4           C

(4 row(s) affected)
*/

[解决办法]
引用:
引用:
有如下表:
create table temp_order (col1 int,col2 varchar(10))
insert into temp_order values ('1','A')


insert into temp_order values ('3','B')
insert into temp_order values ('4'……



oracle写法相似,只要找个自增ID的表,用LEFT JOIN 关联就可以得出。
[解决办法]
select t2.col1 col1,t1.col2 from temp_order t2 left join temp_order t1
on t1.col1=t2.col1
where id<=(select max(col1) from temp_order)

上述代码就可以在oracle运行

热点排行