某财务报表

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语句就掌握了的更多相关文章

  1. 看懂SqlServer查询计划 SQL语句优化分析

    转自 http://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html 阅读目录 开始 SQL Server 查找记录的方法 SQL Ser ...

  2. Oracle之SQL优化专题03-如何看懂SQL的执行计划

    专题第一篇<Oracle之SQL优化专题01-查看SQL执行计划的方法>讲到了查看SQL执行计划的方法,并介绍了各种方法的应用场景,那么这一篇就主要介绍下如何看懂SQL的执行计划.毕竟如果 ...

  3. 详解SQL中Groupings Sets 语句的功能和底层实现逻辑

    摘要:本文首先简单介绍 Grouping Sets 的用法,然后以 Spark SQL 作为切入点,深入解析 Grouping Sets 的实现机制. 本文分享自华为云社区<深入理解 SQL 中 ...

  4. SQL点滴35—SQL语句中的exists

    原文:SQL点滴35-SQL语句中的exists 比如在Northwind数据库中有一个查询为 SELECT c.CustomerId,CompanyName FROM Customers c WHE ...

  5. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  6. SQLServer 常见SQL笔试题之语句操作题详解

    SqlServer 常见SQL笔试题之语句操作题详解 by:授客 QQ:1033553122 测试数据库 CREATE DATABASE handWriting ON PRIMARY ( name = ...

  7. 整理:sql server 中sql语句执行顺序

    SQL Server 查询处理中的各个阶段(SQL执行顺序) SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是 ...

  8. Sql Server 优化 SQL 查询:如何写出高性能SQL语句

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...

  9. SQL Server经典sql语句大全(转)

    一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数 ...

  10. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...

随机推荐

  1. 关于Mysql不能被远程连接的问题

    1.修改mysql配置文件 注释掉   #bind_address:127.0.0.1 2.授权账户远程连接权限 grant all priveleges on '.' To 'myuser'@'%' ...

  2. Flask的session——关于写扩展所学习到的

    这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...

  3. 给FPGA初学者的建议——不要浮躁(转)

    原作者:http://hi.baidu.com/zhoubin7020 作为FPGA新人常常在论坛上问,用什么语言啊,用什么软件啊,用那个公司的芯片等问题.我个人认为学习FPGA和学习单片机有相同的道 ...

  4. 如果设置Keil从C代码编译出来的hex文件地址从0x8000开始

    和MON51的设置一样,这样作:1.把Startup.a51拷贝到工程目录加入工程,修改125行的      CSEG    AT      0  为   CSEG    AT      0X8000 ...

  5. 将vim作为QT开发的IDE

    转载请注明链接与作者huihui1988 用了一段时间的vim,喜欢上了这种简洁高效的编辑器.恰逢正在学习QT中,于是将vim变成了开发QT的工具.以下是具体配置. 一.语法高亮支持: 1.打开VIM ...

  6. T-SQL 语法元素

    一.标识符 在T-SQL语言中,对SQLServer数据库及其数据对象(比如表.索引.视图.存储过程.触发器等)需要以名称来进行命名并加以区分,这些名称就称为标识符. 通常情况下,SQLServer数 ...

  7. HDU1232 畅通工程 (并查集模板题)

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  8. ios常用的几个动画代码

      #import "MianViewController.h" #import <QuartzCore/QuartzCore.h> @interface MianVi ...

  9. android scrollview 简单的使用

    以前写的Scrollview ,通常都是与Listview结合使用,不过因复杂可能新手不太懂,网上有许多文章,这里就不贴那个了DEMO了.  写了个简单的供大家参考:这样比较好理解(需要复杂的可以Q我 ...

  10. <ListView>分列显示

    <ListView> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel Width="{B ...