日期:2014-05-18  浏览次数:20577 次

接活跃气氛贴:9*9问题
原帖:http://topic.csdn.net/u/20120526/13/11dbdbd6-c869-4078-8872-427b89ce6f6c.html
SQL code

--强大的pivot

--数据准备
create table t4
(
    row int,
    col int,
    val char(10)
)

--添加测试数据
declare @x int
declare @y int
declare @c varchar(6000)
set @x = 1
while(@x<=9)
begin
 select @y=@x,@c=''
 while(@y<=9)
 begin
   select @c=cast(@x as varchar)+'x'+cast(@y as varchar)+'='
        +(case when len(ltrim(@x*@y))>1 then '' else ' ' end)+ltrim(@x*@y)+' '
   select @y=@y+1
   insert into t4 values(@y-1,@x,@c)
 end
 select @x=@x+1
end

---------------------------------------------
row         col         val
----------- ----------- ----------
1           1           1x1= 1    
2           1           1x2= 2    
3           1           1x3= 3    
4           1           1x4= 4    
5           1           1x5= 5    
6           1           1x6= 6    
7           1           1x7= 7    
8           1           1x8= 8    
9           1           1x9= 9    
2           2           2x2= 4    
3           2           2x3= 6    
4           2           2x4= 8    
5           2           2x5=10    
6           2           2x6=12    
7           2           2x7=14    
8           2           2x8=16    
9           2           2x9=18    
3           3           3x3= 9    
4           3           3x4=12    
5           3           3x5=15    
6           3           3x6=18    
7           3           3x7=21    
8           3           3x8=24    
9           3           3x9=27    
4           4           4x4=16    
5           4           4x5=20    
6           4           4x6=24    
7           4           4x7=28    
8           4           4x8=32    
9           4           4x9=36    
5           5           5x5=25    
6           5           5x6=30    
7           5           5x7=35    
8           5           5x8=40    
9           5           5x9=45    
6           6           6x6=36    
7           6           6x7=42    
8           6           6x8=48    
9           6           6x9=54    
7           7           7x7=49    
8           7           7x8=56    
9           7           7x9=63    
8           8           8x8=64    
9           8           8x9=72    
9           9           9x9=81    

(45 行受影响)
-------------------------------------------------分割线-------------------------------------------
==================================================================================================

--1.
select * from t4 pivot (max(val) for col in([9],[8],[7],[6],[5],[4],[3],[2],[1]))b
------------------------------------------------
row         9          8          7          6          5          4          3          2          1
----------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
1           NULL       NULL       NULL       NULL       NULL       NULL       NULL       NULL       1x1= 1    
2           NULL       NULL       NULL       NULL       NULL       NULL       NULL       2x2= 4     1x2= 2    
3           NULL       NULL       NULL       NULL       NULL       NULL       3x3= 9     2x3= 6     1x3= 3    
4           NULL       NULL       NULL       NULL       NULL       4x4=16     3x4=12     2x4= 8     1x4= 4    
5           NULL       NULL       NULL       NULL       5x5=25     4x5=20     3x5=15     2x5=10     1x5= 5    
6           NULL       NULL       NULL       6x6=36     5x6=30     4x6=24     3x6=18     2x6=12     1x6= 6    
7           NULL       NULL       7x7=49     6x7=42     5x7=35     4x7=28     3x7=21     2x7=14     1x7= 7    
8           NULL       8x8=64     7x8=56     6x8=48     5x8=40     4x8=32     3x8=24     2x8=16     1x8= 8    
9           9x9=81     8x9=72     7x9=63     6x9=54     5x9=45     4x9=36     3x9=27     2x9=18     1x9= 9    

(9 行受影响)

-----------------------------------------------------
--2.