看懂这个sql 你的sql语句就掌握了
某财务报表
USE [PB_AHTC]
GO
/****** Object: StoredProcedure [dbo].[JSPRO] Script Date: 12/10/2013 11:54:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[JSPRO]
AS
BEGIN
DECLARE @B_CODE INT --商户代码
DECLARE @B_JSTIME INT --商户结算时间
DECLARE @B_LastJSTIME DATETIME --商户结算时间
DECLARE @B_JSTIME2 INT --商户结算时间
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT B_CODE, B_JSTIME,B_LastJSTIME FROM dbo.Z_BUSINESS) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
fetch next from My_Cursor into @B_CODE,@B_JSTIME,@B_LastJSTIME --填充变量
WHILE @@FETCH_STATUS = 0
BEGIN
set @B_JSTIME2= DATEDIFF(DAY,@B_LastJSTIME,GETDATE())
IF @B_JSTIME2>=@B_JSTIME --是否到结算期(当前时间-最后结算时间〉= XX天一结)
BEGIN
begin transaction --事物
declare @errorSum int --定义局部变量
set @errorSum=0 --初始化临时变量
--查询要结算的面值卡 插入到结算主表
Insert into Z_SHJZ(Z_B_CODE,Z_B_NAME,KHXfJE,KFJE,XJZFJE,khyh,JLZFSH,SHZFJL,jlyl, KHJF,ICBC,LASTJSTIME,JSTIME,CARDTYPE)
SELECT B.B_CODE ,B.B_NAME , SUM(l_je22)KHXFJE ,SUM(l_je4)KFJE,SUM(l_je3)XJZFJE,null khyh,SUM(l_je22*(1-l_hl1))JLZF,0.00 SJZF ,SUM(l_je44)jlyl,0.00 KHJF ,''ICBC,
B.B_LASTJSTIME ,GETDATE() AS JSTIME, 2 AS CARDTYPE
FROM dbo.Z_LS A,Z_BUSINESS B WHERE A.B_CODE =@B_CODE and A.B_CODE=b.B_CODE AND M_TIME<=GETDATE() AND L_JS!=1 AND ((B_JUD = 2) OR (B_JUD = 3))and len(C_KH)=9
GROUP BY B.B_CODE,B.B_NAME,B.B_LASTJSTIME
set @errorSum=@errorSum+@@error --累计是否有错误
--跟新流水表面值卡标记为已结算
UPDATE Z_LS SET L_JS=1 WHERE B_CODE =@B_CODE AND M_TIME<=GETDATE() AND L_JS!=1 AND ((B_JUD = 2) OR (B_JUD = 3))and len(C_KH)=9
set @errorSum=@errorSum+@@error --累计是否有错误
--查询要结算的VIP卡 插入到结算主表
Insert into Z_SHJZ(Z_B_CODE,Z_B_NAME,KHXfJE,KFJE,XJZFJE,khyh,JLZFSH,SHZFJL,jlyl,khjf,ICBC,LASTJSTIME,JSTIME,CARDTYPE)
select b.B_CODE,b.B_NAME, SUM(l_je22)KHXFJE ,SUM(l_je4)KFJE, SUM(l_je3)XJZFJE ,SUM(L_JE22* L_HL2)khyh,
SUM( CASE when [L_JE4]- [L_JE4] *(B_HL3-B_HL2) >=0 then [L_JE4]- [L_JE4] *(B_HL3-B_HL2) else 0 end) JLZF ,
SUM( CASE when [L_JE4]- [L_JE4] *(B_HL3-B_HL2) <0 then [L_JE4] *(B_HL3-B_HL2)-[L_JE4] else 0 end )SJZF,
SUM( [L_JE22] *(B_HL3-B_HL2-B_HL4) )jlyl,
SUM([L_JE22]*B_HL4)khjf,''ICBC,B.B_LASTJSTIME ,GETDATE() AS JSTIME, 1 AS CARDTYPE
from [Z_LS] a, Z_BUSINESS b WHERE A.B_CODE =@B_CODE and A.B_CODE=b.B_CODE AND M_TIME<=GETDATE() and ((B_JUD = 4) OR (B_JUD = 3))and len(C_KH)=8
GROUP BY B.B_CODE,B.B_NAME,B.B_LASTJSTIME
set @errorSum=@errorSum+@@error --累计是否有错误
--跟新流水表面值卡标记为已结算
UPDATE Z_LS SET L_JS=1 WHERE B_CODE =@B_CODE AND M_TIME<=GETDATE() AND L_JS!=1 AND ((B_JUD = 4) OR (B_JUD = 3))and len(C_KH)=8
set @errorSum=@errorSum+@@error --累计是否有错误
--跟新最后一次结算时间
UPDATE Z_BUSINESS SET B_LASTJSTIME=GETDATE() WHERE B_CODE=@B_CODE
set @errorSum=@errorSum+@@error --累计是否有错误
if @errorSum<>0 --如果有错误
begin
rollback transaction --回滚
end
else
begin
commit transaction --提交
end
END
fetch next from My_Cursor into @B_CODE,@B_JSTIME,@B_LastJSTIME
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
END
看懂这个sql 你的sql语句就掌握了的更多相关文章
- 看懂SqlServer查询计划 SQL语句优化分析
转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...
- Oracle之SQL优化专题03-如何看懂SQL的执行计划
专题第一篇<Oracle之SQL优化专题01-查看SQL执行计划的方法>讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划.毕竟如果 ...
- 详解SQL中Groupings Sets 语句的功能和底层实现逻辑
摘要:本文首先简单介绍 Grouping Sets 的用法,然后以 Spark SQL 作为切入点,深入解析 Grouping Sets 的实现机制. 本文分享自华为云社区<深入理解 SQL 中 ...
- SQL点滴35—SQL语句中的exists
原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...
- {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析
MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...
- SQLServer 常见SQL笔试题之语句操作题详解
SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...
- 整理:sql server 中sql语句执行顺序
SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是 ...
- Sql Server 优化 SQL 查询:如何写出高性能SQL语句
1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...
- SQL Server经典sql语句大全(转)
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
随机推荐
- C语言编译过程简介
刚开始接触编程的时候,只知道照书敲敲代码,一直都不知道为什么在windows平台下代码经过鼠标那样点击几下,程序的结果就会在那个黑色的屏幕上.现在找了个机会将C语言的编译原理做一下小小的总结,这样也能 ...
- javascript string对象的属性与方法
一 创建string对象 new string('string'); 更直接的定义方法是var str = 'string'; 二 string属性 1.constructor 2.lenght 字符 ...
- Windows下FFmpeg快速入门 <第二篇>
FFmpeg简介 FFmpeg是什么? FFmpeg是用于录制.转换和流化音频和视频的完整解决方案, 包括 libavcodec ,一套领先的音/视频编解码类库.FFmpeg 在Linux上开发,当可 ...
- jQuery之位置
1.offset()获取匹配元素在相对浏览器窗口的偏移量 返回一个对象,包括两个属性.left:相对浏览器窗口左边的距离.top:相对浏览器顶部的距离. $("#div1").o ...
- C# is 与 as 运算符
as运算符有一定的适用范围,它只适用于引用类型或可以为null的类型,而无法执行其他的转换,如值类型的转换以及用户自定义的类型转换,这类转换应该适用强制转换表达式来执行.as当转换不了的时候返回nul ...
- 转:C# 中的委托和事件
引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...
- OpenWrt backfire trunk源码下载及编译
OpenWrt signature check failed remove wrong signature file svn co svn://svn.openwrt.org/openwrt/bran ...
- MyCat 介绍、分片规则、调优的内容收集
一.MyCat的简介 MyCat高可用.负载均衡架构图: 详细知识点: MySQL分布式集群之MyCAT(一)简介(修正) 二.MyCat的schema.xml讲解 详细知识点:MySQL分布式集群 ...
- 本人的cocos2d-x之路
大学基本上算是混着过去了- -,说起学到的东西,感觉真的不多.然后吧.在大四这年在大妈的带动下,来到了一家棋牌游戏公司,详细就不说了.刚进去的时候真的是啥也不懂.先是看了项目代码,自己捉摸了1 ...
- Oracle学习(十):视图,索引,序列号,同义词
1.知识点:能够对比以下的录屏进行阅读 视图,序列,索引,同义词 SQL> --视图:虚表 SQL> --视图的长处:简化复杂查询.限制数据訪问(银行用的多).提供数据的相互独立.相同的数 ...