某财务报表

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. jQuery插件之artDialog

    artDialog是一个非常强大的弹出框插件.默认有两个版本,一个是jQuery版,一个是javascript版.功能非常多,而且使用非常简单.不写了,直接贴上官网的预览运行地址,以后用得着的时候去那 ...

  2. ant的入门 配置与安装

    最近需要用ant来生成文件,java类.我才开始了解了这个工具.仔细看了一下,感觉这个小工具的强大功能. 博主也是初学者,在网上收集了资料,尝试了配置:感觉有些高手写得不错变引用之. 配置如下: 以上 ...

  3. 【剑指offer】面试题23:从上往下打印二叉树

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: bfs,队列. 注意,队列最后不要忘了pop(). 代码: /* struct TreeNode { int val; stru ...

  4. Candy 解答

    Question There are N children standing in a line. Each child is assigned a rating value. You are giv ...

  5. Installing — pylibmc 1.2.3 documentation

    Installing - pylibmc 1.2.3 documentation libmemcached

  6. PHP 超强过滤函数

    PHP 超强过滤函数 你有每次要过滤的时候总是去翻曾经的过滤代码的时候么? 你有搜索过怎样防过滤,防攻击的PHP解决方法么? 你有对全然遵循'过滤输入,避免输出',Web界经典说辞么?     事实上 ...

  7. 更新-----Scripts:执行双网卡绑定

    #!/bin/bash #------------------------------------------------------------------------------- # Name: ...

  8. Android应用程序组件Content Provider的共享数据更新通知机制分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6985171 在Android系统中,应用程序组 ...

  9. rhel5.8安装mysql测试

    MySQL-rhel5.8 安装:在Linux下安装MySQL有三种方式:第一种以rpm的二进制文件分个安装,第二种是自己编译源码后安装,最后一种是以二进制tar.gz文件来安装(这种安装方式下载安装 ...

  10. Oracle Linux Server 7安装VMwareTools问题

    OracleLinuxServer7安装VMwareTools问题#./vmware-install.pl时报错:#-bash: ./vmware-instal.pl:/usr/bin/perl:ba ...