SQL 使用临时表和临时变量完成update表字段---实际案例
- -- 使用临时表
- -- 创建临时表
- --ALTER TABLE TS_ExpenseApplication_Reim_Detail ADD BgCode NVARCHAR() NULL, BgItem NVARCHAR() NULL, BgCate NVARCHAR() NULL;
- IF OBJECT_ID('dbo.tempExpense','U') IS NOT NULL DROP TABLE dbo.tempExpense;
- GO
- SELECT *
- INTO dbo.tempExpense
- FROM TS_ExpenseApplication_Reim_Detail
- where ISNULL(Bgcode,'')=''
- ORDER BY TaskID;
- --select budgetno,BgCode,* from TS_ExpenseApplication_Reim_Detail
- --select * from TS_ExpenseApplication_Reim_Detail1
- --SELECT * FROM dbo.tempExpense;
- -- 声明变量
- DECLARE
- @task AS INT,
- @budgetnum AS NVARCHAR() ,
- @budgetcode AS NVARCHAR(),
- @Costcenter AS NVARCHAR() ,
- @Feecategory AS NVARCHAR(),
- @budgetItem AS NVARCHAR();
- WHILE EXISTS(SELECT TaskID FROM dbo.tempExpense)
- BEGIN
- -- 也可以使用top
- SET ROWCOUNT
- SELECT @task= TaskID, @budgetnum= BudgetNo FROM dbo.tempExpense;
--抓取费用类别- select @Costcenter=FreeCategory from TS_ExpenseApplication_Reim a inner join Trina_CostCenterFreeCategory b on a.costcentercode=b.CostCenterCode
- where TaskID=@task;
- print @Costcenter;
- --B002 BA05 B003 B004 B003_1 B004_1 B006 B007 B010 B017 B021 B022 B027 B030 B031 B032 B027高管手机
- --根据规则匹配对应预算号
- begin
- if CHARINDEX('B004_1',@budgetnum)>
- set @budgetcode='B004_1';
- else if CHARINDEX('B003_1',@budgetnum)>
- set @budgetcode='B003_1';
- else if CHARINDEX('B027高管手机',@budgetnum)>
- set @budgetcode='B027高管手机';
- else if CHARINDEX('B002',@budgetnum)>
- set @budgetcode='B002';
- else if CHARINDEX('BA05',@budgetnum)>
- set @budgetcode='BA05';
- else if CHARINDEX('B003',@budgetnum)>
- set @budgetcode='B003';
- else if CHARINDEX('B004',@budgetnum)>
- set @budgetcode='B004';
- else if CHARINDEX('B006',@budgetnum)>
- set @budgetcode='B006';
- else if CHARINDEX('B007',@budgetnum)>
- set @budgetcode='B007';
- else if CHARINDEX('B010',@budgetnum)>
- set @budgetcode='B010';
- else if CHARINDEX('B017',@budgetnum)>
- set @budgetcode='B017';
- else if CHARINDEX('B021',@budgetnum)>
- set @budgetcode='B021';
- else if CHARINDEX('B022',@budgetnum)>
- set @budgetcode='B022';
- else if CHARINDEX('B027',@budgetnum)>
- set @budgetcode='B027';
- else if CHARINDEX('B030',@budgetnum)>
- set @budgetcode='B030';
- else if CHARINDEX('B031',@budgetnum)>
- set @budgetcode='B031';
- else if CHARINDEX('B032',@budgetnum)>
- set @budgetcode='B032';
- else
- set @budgetcode='';
- end
- print @budgetcode;
- --抓取关联的维护表中会计号和科目
- begin
- if @Costcenter='销售费用'
- begin
- select @budgetItem=SellingCode,@Feecategory=SellingName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
- print @budgetItem;
- print @Feecategory;
- end
- else if @Costcenter='管理费用'
- begin
- select @budgetItem=GACode,@Feecategory=GAName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
- print @budgetItem;
- print @Feecategory;
- end
- else if @Costcenter='研发费用'
- begin
- select @budgetItem=RDCode,@Feecategory=RDName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
- print @budgetItem;
- print @Feecategory;
- end
- else if @Costcenter='制造费用'
- begin
- select @budgetItem=OverheadCode,@Feecategory=OverheadName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
- print @budgetItem;
- print @Feecategory;
- end
- else
- begin
- select @budgetItem='',@Feecategory='' from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
- print @budgetItem;
- print @Feecategory;
- end
- end
- UPDATE TS_ExpenseApplication_Reim_Detail SET BgCode= @budgetcode,BgItem=@budgetItem,BgCate=@Feecategory WHERE TaskID=@task;
- set @budgetcode='';
- set @Feecategory='';
- set @budgetItem='';
- SET ROWCOUNT
- DELETE FROM dbo.tempExpense WHERE TaskID=@task;
- END
SQL 使用临时表和临时变量完成update表字段---实际案例的更多相关文章
- SQL Server 临时表和表变量系列之选择篇
原文地址:https://yq.aliyun.com/articles/69187 摘要: # 摘要 通过前面的三篇系列文章,我们对临时表和表变量的概念.对比和认知误区已经有了非常全面的认识.其实,我 ...
- mysql / pgsql 使用sql语句查询数据库所有表注释已经表字段注释
mysql使用sql语句查询数据库所有表注释已经表字段注释(转载) 场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammo ...
- SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别
原文链接:https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中 ...
- 小记sql server临时表与表变量的区别
临时表与表变量都可以起到“临时”的作用,那么两者主要的区别是什么呢? 这里不讨论创建方式,以及全局临时表.会话临时表这些,主要记录一下个人对两者的主要区别以及适用情况的看法,有什么不对或补充的地方,欢 ...
- SQL Server 临时表 Vs 表变量
开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点.这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和 ...
- mysql使用sql语句查询数据库所有表注释已经表字段注释
场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,T ...
- coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释
1.要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,TABLE_ ...
- SQL Server 判断表名称、索引、表字段是否存在
1.判断索引是否存在 ps:@tableName 表名称, @indexName 索引名 IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id=OB ...
- sql 查询所有数据库、表名、表字段总结
ms sql server 1.查询所有表select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2.查询所有数 ...
随机推荐
- [Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
Given an array A of non-negative integers, half of the integers in A are odd, and half of the intege ...
- VIVO 手机重力传感器踩坑记录
手上的 vivo-x9 手机传感器模式下的旋转效果有误,经查发现是 Gravity sensor 返回的数据有误,和其他机型返回的数据相反的. 参考 Gravity 的说明: A three dime ...
- 代码覆盖率 (Code Coverage)从简到繁 (一)
代码覆盖率(Code Coverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标.它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重 ...
- setData方法修改data中对象或数组的属性值(小程序开发)
今日在开发小程序地图的过程中,遇到一个问题,困扰了我一会 业务如下: 困扰点: 我不知道如何修改data中数组包含的对象是如何修改的:期初的想法还是想共享上面的数据,想的太简单了 正确的解决步骤: 直 ...
- Hive篇---Hive与Hbase整合
一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...
- Google、B站……那些神奇的404页面,你看过多少?
据说在第三次科技革命之前,互联网的形态就是一个大型的中央数据库,这个数据库就设置在 404 房间里面.那时候所有的请求都是由人工手动完成的,如果在数据库中没有找到请求者所需要的文件,或者由于请求者写错 ...
- docker 常用命令记录
下载镜像 docker pull imagesName 查看所有镜像 docker images 查看当前运行的镜像 docker ps 运行镜像 docker run imagesName 停止运行 ...
- 【Java基础】【20IO(字节流)】
20.01_IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操 ...
- 【Java基础】【01初识Java】
01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...
- DNS生产系统架构
主机名控制者: DNS 服务器地址:http://vbird.dic.ksu.edu.tw/linux_server/0350dns_1.php 安装博客:http://www.linuxidc.co ...