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

活跃下气氛,9*9乘法表中的一个问题
http://topic.csdn.net/u/20120525/16/1e09cbf2-2945-4d9e-ada7-1b03c127051a.html?67353
根据9*9乘法表中的一个问题

假设一个表t(row,col,val)数据如下,刚好每行,每列存放的是9*9乘法口诀中的一个值,如何用一句话将其按9*9乘法表中数据的对应方式打印或选出来?
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

------解决方案--------------------
SQL code

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
   print @c
 end
 select @x=@x+1
end

/****************

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

------解决方案--------------------
标准的行转列
------解决方案--------------------
探讨

用case when +group by 进行行转列。