日期:2014-05-19  浏览次数:20512 次

一个SQL的select 语句的问题
问题是这样的,如果一个表table_1中有三个列,col_1,col_2,col_3

里面的数据如下:


col_1     col_2       col_3
1               4               张三
1               5               李四
2               3               全一
2               4               王二
2               5               周五

希望有办法,用一个或几个SQL语句,使我list出数据如下

col_1       col_2       col_3
1                 1               NULL
1                 2               NULL
1                 3               NULL
1                 4               张三
1                 5               李四
1                 6               NULL
1                 7               NULL
1                 8               NULL
2                 1               NULL
2                 2               NULL
2                 3               全一
2                 4               王二
2                 5               周五
2                 6               NULL
2                 7               NULL
2                 8               NULL


另外,,这个表里面的每组(按col_1分组)数据不一定,可能有8条,也可能有5条,也可能只有一条,,
需要list出来的数据,每组(按col_1分组)必须有8条记录,,按照col_2以升序排列,,


不知哪位高人有办法,,


------解决方案--------------------
--创建测试环境
create table #t(col_1 int,col_2 int,col_3 varchar(20))

--插入测试数据
insert #t(col_1,col_2,col_3)
select '1 ', '4 ', '张三 ' union all
select '1 ', '5 ', '李四 ' union all
select '2 ', '3 ', '全一 ' union all
select '2 ', '4 ', '王二 ' union all
select '2 ', '5 ', '周五 '

--求解过程

select top 8 identity(int,1,1) as id into #tmp from sysobjects a,sysobjects b

select distinct col_1,id
into #tmp2
from #t
cross join #tmp

select #tmp2.col_1,#tmp2