create table yy
(
a int,
b int,
c int,
d int
)
insert into yy values(1,50,10,30)
insert into yy values(2,50,10,30)
insert into yy values(3,50,10,30)
insert into yy values(4,50,10,30)
insert into yy values(5,50,10,30)
insert into yy values(6,50,10,30)
insert into yy values(7,50,10,30)
--求a=@a1,b=@b1的c的值,d的值,a=@a1,b=@b1的c+d的值,所有c的和,所有d的和
create proc xx
(
@a1 int, --a的值
@a2 int --b的值
)
as 
declare @a3 int --c+d的值
declare @a4 int  --c的和
declare @a5 int  --d的和
select c,d,(select @a3=@a1+@a2)as [c+d的和],(select @a4=count(c) from yy) as '所有c的和' yy where a=@a,b=@b
执行的时候出现问题,我现在想要的结果就是
--求a=@a1,b=@b1的c的值,d的值,a=@a1,b=@b1的c+d的值,所有c的和,所有d的和 上面的SQL语句就是想表达下自己的想法,存储我不是很了解,有会的哥哥姐姐发个帖子帮下忙谢谢了

解决方案 »

  1.   


    不是很清楚你的需求
    create proc xx 

    @a1 int,
    @a2 int, 
    @b1 int 

    as 
    declare @SQL1 VARCHAR(8000)
    declare @SQL2 VARCHAR(8000)
    declare @SQL3 VARCHAR(8000)SELECT @SQL1='SELECT C,D into ##table1 from yy where a=@a1 and b=@a2  '--求a=@a1,b=@b1的c的值,d的值
    SELECT @SQL2='SELECT c+d as cd  into ##table2 from yy where a=@a1 and b=@b1  '--a=@a1,b=@b1的c+d的值,
    SELECT @SQL3='SELECT sum(c) as c的和,sum(d) as d的和 into ##table3 from yy   where a=@a1 and b=@b1  '--a=@a1,b=@b1 所有c的和,所有d的和 exec @SQL1
    exec @SQL2
    exec @SQL3GO你要什么就可以 select * from ##table1
      

  2.   

    create table yy
    (
    a int,
    b int,
    c int,
    d int
    )insert into yy values(1,50,10,30)
    insert into yy values(2,50,10,30)
    insert into yy values(3,50,10,30)
    insert into yy values(4,50,10,30)
    insert into yy values(5,50,10,30)
    insert into yy values(6,50,10,30)
    insert into yy values(7,50,10,30)
    --求a=@a1,b=@b1的c的值,d的值,a=@a1,b=@b1的c+d的值,所有c的和,所有d的和
    create proc xx
    (
    @a int, --a开始值  我让用户输入要查询的a的值的开始和结束值
    @ax int,--a的结束值
    @b int --b的值
    )
    as 
    declare @a1 int
    declare @a2 int
    declare @a3 int --c+d的值
    declare @a4 int  --c的和
    declare @a5 int  --d的和
    if(@a2>(select max(a)from yy)&&@ax<select min(b)from yy)
    print '没有找到你要查询的内容'
    else 
    (
    if(@b>(select max(b)from yy)&&@b<select min(b)from yy)
    print '没有找到你要查询的内容'
    else
    (
    while(@a<@a1<@ax)
    select @a1=b from yy where a=@a and b=@b--在这里出错--不知道这样的if else 写法和while用法对吗,如果不对是怎么写的那,
    )
    )