存储过程中表(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
存储过程中表(table)的自连接及临时表示例 (自认为好的存储过程示例)相关推荐
- oracle 存储过程select into,01. 把存储过程结果集SELECT INTO到临时表(示例代码)
原文:01. 把存储过程结果集SELECT INTO到临时表 在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种. 一. SELECT INTO 1. 使用select into会自动生 ...
- mysql 存储过程声明式游标_Mysql 存储过程中使用游标循环读取临时表
游标 游标(Cursor)是用于查看或者处理结果集中的数据的一种方法.游标提供了在结果集中一次一行或者多行前进或向后浏览数据的能力. 游标的使用方式 定义游标:Declare 游标名称 CURSOR ...
- 01. 把存储过程结果集SELECT INTO到临时表
原文:01. 把存储过程结果集SELECT INTO到临时表 在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种. 一. SELECT INTO 1. 使用select into会自动生 ...
- html表单标签form怎样设置空隙,Smartform中表(table)的行间距设置
使用TCODE SMARTSTYLES 进入到style的设置界面,也可以直接从TCODE smartforms 里面进入. STYLE 分为三部分,header data, paragraph fo ...
- 存储过程中定义sql语句_学习SQL:用户定义的存储过程
存储过程中定义sql语句 Stored procedures (SPs) are one more powerful database object we have at our disposal. ...
- java 根据类名示例化类_如何使用示例从Java中的类路径加载资源
java 根据类名示例化类 Java中的类路径不仅用于加载.class文件,而且还可以用于加载资源,例如属性文件,图像,图标,缩略图或任何二进制内容. Java提供了API来将这些资源读取为Input ...
- Visual Studio 2012 示例代码浏览器 - 数以千计的开发示例近在手边,唾手可得
为什么80%的码农都做不了架构师?>>> 示例代码对于开发人员的重要性是不言而喻的.很多程序员往往通过示例代码着手学习一门技术.当开发人员遇到编码困难时也往往希望得到示例代码来 ...
- 把存储过程结果集SELECT INTO到临时表
在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种. 一. SELECT INTO 1. 使用select into会自动生成临时表,不需要事先创建 select * into #tem ...
- oracle 存储过程drop table,利用存储过程实现Oracle的droptableifexists-Oracle
利用存储过程实现 Oracle的droptableifexists,在Mysql中可以使用[drop table if exists tab_name]来实现目标表的无报错删除,但在Oracle中不支 ...
最新文章
- html5标签 H5标签
- Android第二十五期 - 猜歌小游戏
- 获取当前时间日期并格式化--JS
- 【网络安全】HTB靶机渗透系列之Sniper
- JVM运行时结构、Java内存管理、JVM实例、HotSpot VM对象的创建、内存布局和访问定位
- chrome 主进程cpu占用50%怎么办?
- ×××××sales_data通过类型转换形成的临时对象不能转换成sales_data (非常量引用)
- jQuery.protoype.xxx=function(){}
- Git 使用,命令说明
- 机器学习相关的一些术语
- make install到指定安装目录
- IDEA利用wsdl文件生成WebService调用接口的方法
- 用Scrapy框架爬取校花网所有校花图片
- D.背单词的小智(二分)
- Typora收费了?推荐两款Markdown编辑器
- Web全栈开发训练营
- 计算机专业本科毕业设计答辩详细指导
- 记录 coda装pytorch并不需要单独装cuda和cudnn|李沐评论
- zjs-my-diary-20191227
- 别人Python都玩腻了,而你却连安装工具库都搞不清楚?