1. -- 使用临时表
  2. -- 创建临时表
  3. --ALTER TABLE TS_ExpenseApplication_Reim_Detail ADD BgCode NVARCHAR() NULL, BgItem NVARCHAR() NULL, BgCate NVARCHAR() NULL;
  4.  
  5. IF OBJECT_ID('dbo.tempExpense','U') IS NOT NULL DROP TABLE dbo.tempExpense;
  6. GO
  7.  
  8. SELECT *
  9. INTO dbo.tempExpense
  10. FROM TS_ExpenseApplication_Reim_Detail
  11. where ISNULL(Bgcode,'')=''
  12. ORDER BY TaskID;
  13. --select budgetno,BgCode,* from TS_ExpenseApplication_Reim_Detail
  14. --select * from TS_ExpenseApplication_Reim_Detail1
  15. --SELECT * FROM dbo.tempExpense;
  16.  
  17. -- 声明变量
  18. DECLARE
  19. @task AS INT,
  20. @budgetnum AS NVARCHAR() ,
  21. @budgetcode AS NVARCHAR(),
  22. @Costcenter AS NVARCHAR() ,
  23. @Feecategory AS NVARCHAR(),
  24. @budgetItem AS NVARCHAR();
  25.  
  26. WHILE EXISTS(SELECT TaskID FROM dbo.tempExpense)
  27. BEGIN
  28. -- 也可以使用top
  29. SET ROWCOUNT
  30. SELECT @task= TaskID, @budgetnum= BudgetNo FROM dbo.tempExpense;
      --抓取费用类别
  31. select @Costcenter=FreeCategory from TS_ExpenseApplication_Reim a inner join Trina_CostCenterFreeCategory b on a.costcentercode=b.CostCenterCode
  32. where TaskID=@task;
  33. print @Costcenter;
  34. --B002 BA05 B003 B004 B003_1 B004_1 B006 B007 B010 B017 B021 B022 B027 B030 B031 B032 B027高管手机
  35. --根据规则匹配对应预算号
  36. begin
  37. if CHARINDEX('B004_1',@budgetnum)>
  38. set @budgetcode='B004_1';
  39. else if CHARINDEX('B003_1',@budgetnum)>
  40. set @budgetcode='B003_1';
  41. else if CHARINDEX('B027高管手机',@budgetnum)>
  42. set @budgetcode='B027高管手机';
  43. else if CHARINDEX('B002',@budgetnum)>
  44. set @budgetcode='B002';
  45. else if CHARINDEX('BA05',@budgetnum)>
  46. set @budgetcode='BA05';
  47. else if CHARINDEX('B003',@budgetnum)>
  48. set @budgetcode='B003';
  49. else if CHARINDEX('B004',@budgetnum)>
  50. set @budgetcode='B004';
  51. else if CHARINDEX('B006',@budgetnum)>
  52. set @budgetcode='B006';
  53. else if CHARINDEX('B007',@budgetnum)>
  54. set @budgetcode='B007';
  55. else if CHARINDEX('B010',@budgetnum)>
  56. set @budgetcode='B010';
  57. else if CHARINDEX('B017',@budgetnum)>
  58. set @budgetcode='B017';
  59. else if CHARINDEX('B021',@budgetnum)>
  60. set @budgetcode='B021';
  61. else if CHARINDEX('B022',@budgetnum)>
  62. set @budgetcode='B022';
  63. else if CHARINDEX('B027',@budgetnum)>
  64. set @budgetcode='B027';
  65. else if CHARINDEX('B030',@budgetnum)>
  66. set @budgetcode='B030';
  67. else if CHARINDEX('B031',@budgetnum)>
  68. set @budgetcode='B031';
  69. else if CHARINDEX('B032',@budgetnum)>
  70. set @budgetcode='B032';
  71. else
  72. set @budgetcode='';
  73. end
  74.  
  75. print @budgetcode;
  76. --抓取关联的维护表中会计号和科目
  77. begin
  78. if @Costcenter='销售费用'
  79. begin
  80. select @budgetItem=SellingCode,@Feecategory=SellingName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
  81. print @budgetItem;
  82. print @Feecategory;
  83. end
  84. else if @Costcenter='管理费用'
  85. begin
  86. select @budgetItem=GACode,@Feecategory=GAName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
  87. print @budgetItem;
  88. print @Feecategory;
  89. end
  90. else if @Costcenter='研发费用'
  91. begin
  92. select @budgetItem=RDCode,@Feecategory=RDName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
  93. print @budgetItem;
  94. print @Feecategory;
  95. end
  96. else if @Costcenter='制造费用'
  97. begin
  98. select @budgetItem=OverheadCode,@Feecategory=OverheadName from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
  99. print @budgetItem;
  100. print @Feecategory;
  101. end
  102. else
  103. begin
  104. select @budgetItem='',@Feecategory='' from MT_BudgetFeeCategory where BudgetCode=@budgetcode;
  105. print @budgetItem;
  106. print @Feecategory;
  107. end
  108. end
  109.  
  110. UPDATE TS_ExpenseApplication_Reim_Detail SET BgCode= @budgetcode,BgItem=@budgetItem,BgCate=@Feecategory WHERE TaskID=@task;
  111. set @budgetcode='';
  112. set @Feecategory='';
  113. set @budgetItem='';
  114. SET ROWCOUNT
  115.  
  116. DELETE FROM dbo.tempExpense WHERE TaskID=@task;
  117. 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]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 ...

  2. VIVO 手机重力传感器踩坑记录

    手上的 vivo-x9 手机传感器模式下的旋转效果有误,经查发现是 Gravity sensor 返回的数据有误,和其他机型返回的数据相反的. 参考 Gravity 的说明: A three dime ...

  3. 代码覆盖率 (Code Coverage)从简到繁 (一)

    代码覆盖率(Code Coverage)是反映测试用例对被测软件覆盖程度的重要指标,也是衡量测试工作进展情况的重要指标.它也是对测试工作进行量化的重要指标之一,测试工作往往不如开发那样激动人心,一个重 ...

  4. setData方法修改data中对象或数组的属性值(小程序开发)

    今日在开发小程序地图的过程中,遇到一个问题,困扰了我一会 业务如下: 困扰点: 我不知道如何修改data中数组包含的对象是如何修改的:期初的想法还是想共享上面的数据,想的太简单了 正确的解决步骤: 直 ...

  5. Hive篇---Hive与Hbase整合

     一.前述 Hive会经常和Hbase结合使用,把Hbase作为Hive的存储路径,所以Hive整合Hbase尤其重要. 二.具体步骤 hive和hbase同步https://cwiki.apache ...

  6. Google、B站……那些神奇的404页面,你看过多少?

    据说在第三次科技革命之前,互联网的形态就是一个大型的中央数据库,这个数据库就设置在 404 房间里面.那时候所有的请求都是由人工手动完成的,如果在数据库中没有找到请求者所需要的文件,或者由于请求者写错 ...

  7. docker 常用命令记录

    下载镜像 docker pull imagesName 查看所有镜像 docker images 查看当前运行的镜像 docker ps 运行镜像 docker run imagesName 停止运行 ...

  8. 【Java基础】【20IO(字节流)】

    20.01_IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操 ...

  9. 【Java基础】【01初识Java】

    01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代 ...

  10. DNS生产系统架构

    主机名控制者: DNS 服务器地址:http://vbird.dic.ksu.edu.tw/linux_server/0350dns_1.php 安装博客:http://www.linuxidc.co ...