存储过程中表(table)的自连接及临时表示例 (自认为好的存储过程示例)

 

ALTER PROCEDURE [dbo].[StWRe_GetReportDataSource]
@FunctionName NVARCHAR(20)  = NULL,
@年份           INT                 =   NULL,
@月份           INT                 =   NULL,
@年级           CHAR(4)             =   NULL,
@学院ID           CHAR(8)            =   NULL,
@专业ID           CHAR(8)        =   NULL,
@学年           NVARCHAR(10)        =   NULL
AS

IF(@FunctionName='StipendStopGrant')
BEGIN
 SELECT * FROM StipendStopGrantView
END
--普通助学金停发
IF(@FunctionName='CommonGrantSummary')

BEGIN
 SELECT     '普通奖学金' AS 项目, SUM(停发金额) AS 停发金额 ,  停发起始日期, 原因 AS 停发原因
 FROM         CommonGrantSummaryView
    WHERE(年份=@年份 AND 月份=@月份)
 GROUP BY 停发起始日期, 原因
    ORDER BY 停发起始日期
--EXECUTE [dbo].[StWRe_GetReportDataSource] @FunctionName='CommonGrantSummary',@年份=2010,@月份=1

END

IF(@FunctionName='StipendSearch')
BEGIN
 SELECT ID,助学金类别ID,学年
 FROM   StW_助学金
END
--普通助学金汇总
IF(@FunctionName='CommonGrantsReport')
BEGIN

SELECT a.普通奖学金 AS 上月,
       b.年份,
       b.月份,
       b.普通奖学金 AS 本月
         INTO #TempTableGrants
FROM CommonGrantsView a RIGHT JOIN CommonGrantsView b
ON(a.年份=b.年份 AND a.月份+1=b.月份) OR (a.年份+1=b.年份 AND a.月份=12 AND b.月份=1)
 
SELECT ISNULL(上月,0) AS 上月,
       年份,
       月份,
       本月,
       CASE
       WHEN  本月-ISNULL(上月,0)>0
       THEN  本月-ISNULL(上月,0)
       ELSE  0
       END AS 增加,
       CASE
       WHEN  本月-ISNULL(上月,0)<0
       THEN ABS(本月-ISNULL(上月,0))
       ELSE  0
       END AS 减少,
        0 AS 其他,
        0 AS 补发
FROM #TempTableGrants
WHERE(年份=@年份 AND 月份=@月份)

drop table #TempTableGrants
END
--EXEC [StWRe_GetReportDataSource] @FunctionName='CommonGrantsReport',@年份=2009,@月份=1
IF(@FunctionName='Test')
BEGIN
     SELECT * FROM Test
END
IF(@FunctionName='ScholarShipView')
BEGIN
SELECT *,(奖学金单项金额*人数) AS 奖学金金额 FROM StW_ScholarShipView
WHERE(@学院ID IS NULL OR @学院ID='' OR 学院ID=@学院ID)
AND
     (@专业ID IS NULL OR @专业ID='' OR 专业ID=@专业ID)
AND
     (@年级 IS NULL OR @年级='' OR 年级=@年级)
AND
     (@学年 IS NULL OR @学年='' OR 学年=@学年)
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值