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]LeetCode873. 最长的斐波那契子序列的长度 | Length of Longest Fibonacci Subsequence
A sequence X_1, X_2, ..., X_n is fibonacci-like if: n >= 3 X_i + X_{i+1} = X_{i+2} for all i + 2 ...
- 微信小程序day01-JSON配置
微信小程序 小程序代码构成 JSON配置WXML模板WXSS样式JS逻辑 1.JSON配置 小程序配置 app.json app.json: 是当前小程序的全局配置,包括了小程序的所有页面路径.界面表 ...
- Lucene 09 - 什么是Lucene的高亮显示 + Java API实现高亮显示
目录 1 什么是高亮显示 2 高亮显示实现 2.1 配置pom.xml文件, 加入高亮显示支持 2.2 代码实现 2.3 自定义html标签高亮显示 1 什么是高亮显示 高亮显示是全文检索的一个特点, ...
- .net core高性能通讯开源组件BeetleX
BeetleX beetleX是基于dotnet core实现的轻量级高性能的TCP通讯组件,使用方便.性能高效和安全可靠是组件设计的出发点!开发人员可以在Beetlx组件的支持下快带地构建高性能的T ...
- Linux~其实shell脚本也很简单
用了两个的centos之后,也想看看它的脚本,我们知道shell这个东西就像windows里的批处理,它可以将一些语句进行组合,然后统一去执行,感觉挺方便的. shell文件的组成 shell语言环境 ...
- Chapter 4 Invitations——18
But they were all in, and Edward was speeding away. 但是他们都在里面了之后,Edward就加速走了. I drove home slowly, ca ...
- 自定义的jdbc连接工具类JDBCUtils【java 工具类】
JDBCUtils 类设计: 1. 创建私有的属性*(连接数据库必要的四个变量):dreiver url user password 2. 将构造函数私有化 3.将注册驱动写入静态代码块 4.外界只能 ...
- Java开发知识之Java入门
Java开发知识之Java入门 一丶了解JAVA的版本 JAVA 有三个版本 JAVA SE: 标准版,开发桌面跟商务应用程序 JAVA SE 包括了Java的核心类库,集合,IO 数据库连接 以及网 ...
- C#线程安全使用(四)
这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationTokenSource,C ...
- 磊哥测评之数据库SaaS篇:腾讯云控制台、DMC和小程序
本文由云+社区发表 作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大.数据库的性能如处理速度.对高并发的支持在节节攀升,同时分布式.实时的数据分析.兼容主流数据库等强大的性能 ...