急求一SQL语句!!!(100分)

  • 主题发起人 主题发起人 雪狐狸
  • 开始时间 开始时间

雪狐狸

Unregistered / Unconfirmed
GUEST, unregistred user!
表A:

 字母  数X  数Y  结果
  A 1 1 1
A 1 2 2
A 1 3 3
...
  A 2 2 4
A 2 3 6
A 2 4 8
...
A 3 2 6
A 3 3 9
...
I 9 8 72
I 9 9 81

执行SQL语句后的结果 :

说 明  数X  结果1 结果2 结果3 结果4 ...结果9
A 1 1 2 3 4 ... 9
B 2 2 4 6 8 ... 18
...
n 9 9 18 27 36 ... 81
 
9*9乘法表???[:D]
 
呵呵,真正的表也就是类似这样
 
旋转表, SQL 2000的HELP里边有相应的介绍
 
建议用存储过程来实现
 
呵呵,查询是一方面
如果要是修改了之后再想保存呢?
 
select into
 
搜索一下交叉表,这样的例子太多了。
 
這個其實很好做的!
用存儲過程做吧
你可以建一個臨時表,臨時表有如下列
说 明  数X  结果1 结果2 结果3 结果4 ...结果9
再用游標插入

create Table #XY
(
說明 varchar(10),
數X int,
Y1 int,
Y2 int,
Y3 int,
Y4 int,
Y5 int,
Y6 int,
Y7 int,
Y8 int,
Y9 int
)

declare @字母 varchar(10)
declare @數X int
declare @數Y int
declare @結果 int

declare CursorName scroll Cursor for
select 字母,數X,數Y,結果
from A
order by 字母,數X
open Cursor

Fetch first from CursorName into @字母,@數X,@數Y,@結果
while @@Fetch_status = 0
begin
if @數Y = 1
insert into #XY(說明,數X,Y1)
values(@字母,@數X,@結果)
else if @數Y = 2
insert into #XY(說明,數X,Y1)
values(@字母,@數X,@結果)
else if @數Y = 3
insert into #XY(說明,數X,Y3)
values(@字母,@數X,@結果)
else if @數Y = 4
insert into #XY(說明,數X,Y4)
values(@字母,@數X,@結果)
else if @數Y = 5
insert into #XY(說明,數X,Y5)
values(@字母,@數X,@結果)
else if @數Y = 6
insert into #XY(說明,數X,Y6)
values(@字母,@數X,@結果)
else if @數Y = 7
insert into #XY(說明,數X,Y7)
values(@字母,@數X,@結果)
else if @數Y = 8
insert into #XY(說明,數X,Y8)
values(@字母,@數X,@結果)
else if @數Y = 9
insert into #XY(說明,數X,Y9)
values(@字母,@數X,@結果)
Fetch next form CursorName into @字母,@數X,@數Y,@結果
end

select *
from #XY
order by 說明,數X
 
select r1.字母,r1.数X,结果1,结果2,结果3,结果4,结果5,结果6,结果7,结果8,结果9 from
(
(select 字母,数X, 结果 as 结果1
from Test
where 数Y = 1) r1
left join
(
select 字母, 结果 as 结果2
from Test
where 数Y = 2
) r2 on r1.字母= r2.字母
left join
(select 字母, 结果 as 结果3
from Test
where 数Y = 3
) r3
on r1.字母= r3.字母
left join
(select 字母, 结果 as 结果4
from Test
where 数Y = 4
) r4
on r1.字母= r4.字母
left join
(select 字母, 结果 as 结果5
from Test
where 数Y = 5
) r5
on r1.字母= r5.字母
left join
(select 字母, 结果 as 结果6
from Test
where 数Y = 6
) r6
on r1.字母= r6.字母
left join
(select 字母, 结果 as 结果7
from Test
where 数Y = 7
) r7
on r1.字母= r7.字母
left join
(select 字母, 结果 as 结果8
from Test
where 数Y = 8
) r8
on r1.字母= r8.字母
left join
(select 字母, 结果 as 结果9
from Test
where 数Y = 9
) r9
on r1.字母= r9.字母)
 
后退
顶部