我现在要写个存储过程返回记录集,在网站上调用这个存储过程并使用返回的记录集,具体是这样的
表A,有a1,a2,a3 三列,假设有一条记录 (1,2,"xyz")
表B,有b1,b2两列,假设有两条记录 (2,3) (2,4)
我现在要根据参数@a1 查询表A中a1=@a1,并根据结果记录集中的a2查询表B中b1=a2,将b2求和作为结果记录集的一列
也就是,假如参数@a1=1,那存储过程的结果应该是一个有四列(a1,a2,a3,sum(b2)) 的记录集(1,2,"xyz",7)
a1不是A的主键,b1也不是B的主键,所以查询结果的记录集条数不定的
哪位朋友帮我写一下这个查询语句,谢谢!
SQL查询两张表的问题
答案:2 悬赏:10 手机版
解决时间 2021-05-11 01:30
- 提问者网友:我们很暧昧
- 2021-05-10 04:59
最佳答案
- 五星知识达人网友:醉吻情书
- 2021-05-10 05:54
create proc sp_test @a1 intasbegin create table #tmp ( c1 int, c2 int, c3 varchar(20), c4 int )
insert into #tmp select *,0 from A where a1 = @a1 --向临时表中插入A表中符合条件的记录 declare @lna2 int,@lnqty int
declare cc cursor for select distinct(c2) from #tmp --定义游标为不重复的a2(c2) open cc fetch next from cc into @lna2 while @@fetch_status = 0 begin --循环临时表,查询b2的和 select @lnqty = sum(b2) from B where b1 = @lna2
--更新临时表中预留的记录总和的列 update #tmp set c4 = @lnqty where c2 = @lna2
fetch next from cc into @lna2 end
select * from #tmp drop table #tmpend
insert into #tmp select *,0 from A where a1 = @a1 --向临时表中插入A表中符合条件的记录 declare @lna2 int,@lnqty int
declare cc cursor for select distinct(c2) from #tmp --定义游标为不重复的a2(c2) open cc fetch next from cc into @lna2 while @@fetch_status = 0 begin --循环临时表,查询b2的和 select @lnqty = sum(b2) from B where b1 = @lna2
--更新临时表中预留的记录总和的列 update #tmp set c4 = @lnqty where c2 = @lna2
fetch next from cc into @lna2 end
select * from #tmp drop table #tmpend
全部回答
- 1楼网友:夜风逐马
- 2021-05-10 07:13
不会了吗,哭几
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯