这样的SQL语句如何写(50分)

  • 主题发起人 主题发起人 qiujsh
  • 开始时间 开始时间
Q

qiujsh

Unregistered / Unconfirmed
GUEST, unregistred user!
如果说有两个表,
一个学生信息表, 有字段: 编号 姓名 年龄 性别
如             01 老王  20  男
02 老李 30 男
一个课程表    有字段: 学生编号 所选课程
如               01   英语
                01   语文
02 化学

我想得到下边这样一种结果用一个SQL语句,能否实现,是在INTERBASE数据库,
如果实现不了写存储过程如何写?
   编号 姓名  所选课程   年龄
    01 老王 英语,语文   20
02 老李 化学 30

学生信息表与课程表是主从关系,一对多的关系,在得到的结果集中,字段"所选课程"为
该学生所选课程的字符串累加。
 
聽課﹗﹗
 
我只会在存储过程或程序中实现它
 
smallbs:存储过程也行,如何写,要在INTERBASE数据库里的?
 
使用临时表
 
give you a example :
use sql
CREATE PROCEDURE reports
AS
declare @temps1 char(10)
declare @temps2 int
declare @temps3 decimal(8,2)
declare @temps4 decimal(8,2)
declare cs01 cursor for
select dept ,type ,sum(rmb) ,sum(hkd)
from pcps
group by dept ,type
open cs01
fetch next from cs01 into @temps1 ,@temps2 ,@temps3, @temps4
while @@fetch_status=0
begin
if @temps2=1
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb1=@temps3 ,hkd1=@temps4,rmb=@temps3+rmb2+rmb3 ,hkd=@temps4+hkd2+hkd3 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd)
values (@temps1 ,@temps3,0,0,@temps4,0,0,@temps3,@temps4)
end
if @temps2=2
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb2=@temps3 , hkd2=@temps4,rmb=rmb1+@temps3+rmb3 ,hkd=@temps4+hkd1+hkd3 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd )
values (@temps1,0,@temps3,0,0,@temps4,0,@temps3,@temps4)
end
if @temps2=3
begin
if @temps1 in (select distinct dept from psal)
update psal set rmb3=@temps3 , hkd3=@temps4,rmb=rmb1+rmb2+@temps1,hkd=hkd1+hkd2+@temps4 where dept=@temps1
else
insert psal (dept ,rmb1,rmb2 ,rmb3,hkd1,hkd2,hkd3,rmb,hkd)
values (@temps1,0,0,@temps3,0,0,@temps4,@temps3,@temps4)
end
fetch next from cs01 into @temps1 ,@temps2 ,@temps3, @temps4
end
close cs01
deallocate cs01
GO

 
用两个select,第二个用in关键字
 
实际上我是想知道在INTERBASE里如何写,SQL SERVER 跟INTERBASE的在写法上有些不同,问题还是没有解决。
 
多人接受答案了。
 
后退
顶部