各位高手!我刚在学存储,我写了一个简单的存储过程大概如下:
declare @a1 decimal(9),@a2 decimal(9),@a3 decimal(9),@a4 decimal(9),@a5 decimal(9),@a6 decimal(9),@a7 decimal(9),@a8 decimal(9),@a9 decimal(9),@a10 decimal(9),@a11 decimal(9),@a12 decimal(9),@a13 decimal(9),@a14 decimal(9),@a15 decimal(9),@a16 decimal(9),@a17 decimal(9),@b1 decimal(9)SELECT @a1=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110101' and SubjectYear between '2006' and '2007' and SubjectMonth between '1' and '12'SELECT @a2=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110102' and SubjectYear='2007'SELECT @a3=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110103' and SubjectYear='2007'SELECT @a4=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110104' and SubjectYear='2007'SELECT @a5=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110105' and SubjectYear='2007'SELECT @a6=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110106' and SubjectYear='2007'SELECT @a7=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110107' and SubjectYear='2007'SELECT @a8=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110108' and SubjectYear='2007'SELECT @a9=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110109' and SubjectYear='2007'SELECT @a10=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110110' and SubjectYear='2007'SELECT @a11=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110111' and SubjectYear='2007'SELECT @a12=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110112' and SubjectYear='2007'SELECT @a13=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110113' and SubjectYear='2007'SELECT @a14=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110114' and SubjectYear='2007'SELECT @a15=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110115' and SubjectYear='2007'SELECT @a16=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110116' and SubjectYear='2007'SELECT @a17=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110117' and SubjectYear='2007'
SELECT @b1=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='312222' and SmallSubject='1224' and SubjectYear='2007'select @a1 as a1,@a2 as a2,@a3 as a3,@a4 as a4,@a5 as a5,@a6 as a6,@a7 as a7,@a8 as a8,@a9 as a9,@a10 as a10,@a11 as a11,@a12 as a12,@a13 as a13,@a14 as a14,@a15 as a15,@a16 as a16,@a17 as a17,@b1 as b1看起来好费功夫哦,是不是可以用循环之类的啊?有什么可以简化的啊?怎么做是最好的!

解决方案 »

  1.   

    declare @a1 decimal(9),@a2 decimal(9),@a3 decimal(9),@a4 decimal(9),@a5 decimal(9),@a6 decimal(9),@a7 decimal(9),@a8 decimal(9),@a9 decimal(9),@a10 decimal(9),@a11 decimal(9),@a12 decimal(9),@a13 decimal(9),@a14 decimal(9),@a15 decimal(9),@a16 decimal(9),@a17 decimal(9),@b1 decimal(9)SELECT @a1=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='11111' and SmallSubject='110101' and SubjectYear between '2006' and '2007' and SubjectMonth between '1' and '12'SELECT @a2=sum(case when SmallSubject='110102' then budget else 0 end),
    @a3=sum(case when SmallSubject='110103' then budget else 0 end),
    @a4=sum(case when SmallSubject='110104' then budget else 0 end),
    @a5=sum(case when SmallSubject='110105' then budget else 0 end),
    @a6=sum(case when SmallSubject='110106' then budget else 0 end),
    @a7=sum(case when SmallSubject='110107' then budget else 0 end),
    @a8=sum(case when SmallSubject='110108' then budget else 0 end),
    @a9=sum(case when SmallSubject='110109' then budget else 0 end),
    @a10=sum(case when SmallSubject='110110' then budget else 0 end),
    @a11=sum(case when SmallSubject='110111' then budget else 0 end),
    @a12=sum(case when SmallSubject='110112' then budget else 0 end),
    @a13=sum(case when SmallSubject='110113' then budget else 0 end),
    @a14=sum(case when SmallSubject='110114' then budget else 0 end),
    @a15=sum(case when SmallSubject='110115' then budget else 0 end),
    @a16=sum(case when SmallSubject='110116' then budget else 0 end),
    @a17=sum(case when SmallSubject='110117' then budget else 0 end)
    FROM  CostBudgetInfo where left(Dept_id,5)='11111' and  SubjectYear='2007'
    SELECT @b1=sum(budget) FROM  CostBudgetInfo where left(Dept_id,5)='312222' and SmallSubject='1224' and SubjectYear='2007'select @a1 as a1,@a2 as a2,@a3 as a3,@a4 as a4,@a5 as a5,@a6 as a6,@a7 as a7,@a8 as a8,@a9 as a9,@a10 as a10,@a11 as a11,@a12 as a12,@a13 as a13,@a14 as a14,@a15 as a15,@a16 as a16,@a17 as a17,@b1 as b1
      

  2.   

    建议楼主去看看帮助文档中”CASE“的相关信息
    最好是把所有的例子都看明白
    而且知道在什么时候用