-- 使用临时表
-- 创建临时表
--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表字段---实际案例的更多相关文章

  1. SQL Server 临时表和表变量系列之选择篇

    原文地址:https://yq.aliyun.com/articles/69187 摘要: # 摘要 通过前面的三篇系列文章,我们对临时表和表变量的概念.对比和认知误区已经有了非常全面的认识.其实,我 ...

  2. mysql / pgsql 使用sql语句查询数据库所有表注释已经表字段注释

    mysql使用sql语句查询数据库所有表注释已经表字段注释(转载)   场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammo ...

  3. SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别

    原文链接:https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中 ...

  4. 小记sql server临时表与表变量的区别

    临时表与表变量都可以起到“临时”的作用,那么两者主要的区别是什么呢? 这里不讨论创建方式,以及全局临时表.会话临时表这些,主要记录一下个人对两者的主要区别以及适用情况的看法,有什么不对或补充的地方,欢 ...

  5. SQL Server 临时表 Vs 表变量

    开始 说临时表和表变量,这是一个古老的话题,我们在网上也找到很多的资料阐述两者的特征,优点与缺点.这里我们在SQL Server 2005\SQL Server 2008版本上通过举例子,说明临时表和 ...

  6. mysql使用sql语句查询数据库所有表注释已经表字段注释

    场景: 1. 要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,T ...

  7. coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释

    1.要查询数据库 "mammothcode" 下所有表名以及表注释 /* 查询数据库 ‘mammothcode’ 所有表注释 */ SELECT TABLE_NAME,TABLE_ ...

  8. SQL Server 判断表名称、索引、表字段是否存在

    1.判断索引是否存在 ps:@tableName 表名称, @indexName 索引名 IF EXISTS (SELECT 1 FROM sys.indexes WHERE object_id=OB ...

  9. sql 查询所有数据库、表名、表字段总结

    ms sql server 1.查询所有表select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2.查询所有数 ...

随机推荐

  1. [Swift]LeetCode900. RLE 迭代器 | RLE Iterator

    Write an iterator that iterates through a run-length encoded sequence. The iterator is initialized b ...

  2. [Swift]LeetCode919. 完全二叉树插入器 | Complete Binary Tree Inserter

    A complete binary tree is a binary tree in which every level, except possibly the last, is completel ...

  3. mac连接windows远程桌面及文件复制

    最近更换mac办公,但由于之前是用windows,所以很多文件项目之类的东西都还在windows电脑中,一次都传到mac上又会比较占内存,并且使用率也不高,感觉不划算.但每次想用的时候,在从windo ...

  4. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.love5/com.example.love5.Main11Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.

    若有 java.lang.RuntimeException和 java.lang.NullPointerException: Attempt to invoke virtual method 'voi ...

  5. java程序员的NodeJS初识篇

    摘要 作为一个一直用java来写后端的程序员用NodeJS来写后台,实在不是很爽.这里记下这两个月的NodeJS学习所遇之坑,与java转NodeJS的同仁共勉.学习时间不长,若有理解错误,望指正. ...

  6. 【从零开始自制CPU之学习篇03】锁存器与触发器

    本篇学习了两种锁存器:SR Latch和D Latch,一种触发器:D flip flop SR Latch:SR—锁存器 初始状态下,S和R都为0,Q和Q‘随机有一个为1另一个 为0(取决于电流速度 ...

  7. Kestrel.Transport.Sockets分析与使用

    相信大家都清楚asp core有着非常出色的性能,它出色的性能也源于网络服务模块Kestrel:在techempower测试中Kestrel基础核心达到了700万级别的RPS吞吐能力,具备这样的能力那 ...

  8. 带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

    上一节把springboot和jdbcTemplate大概用法说了一下,以及大概看了一下源码,还说了加载sql文件时的原理. 这一节来看看自动注入JdbcTemplate的原理,顺便用一用Druid数 ...

  9. HashMap,HashTable,ConcurrentHashMap异同比较

    0. 前言 HashMap和HashTable的区别一种比较简单的回答是: (1)HashMap是非线程安全的,HashTable是线程安全的. (2)HashMap的键和值都允许有null存在,而H ...

  10. springboot+mybatis+dubbo+aop日志第三篇

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等等. Spring AOP模块提供截取拦截应用程序的拦截器,例如,当执行方法时,可以在执行方法之前或之后添加 ...