zoukankan      html  css  js  c++  java
  • SQL 使用临时表和临时变量完成update表字段实际案例

    -- 使用临时表
    -- 创建临时表
    --ALTER TABLE TS_ExpenseApplication_Reim_Detail ADD BgCode NVARCHAR(50) NULL, BgItem NVARCHAR(50) NULL, BgCate NVARCHAR(50) 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(50) ,
        @budgetcode AS NVARCHAR(50),
        @Costcenter AS NVARCHAR(50) ,
        @Feecategory AS NVARCHAR(50),
        @budgetItem AS NVARCHAR(50);
        
    WHILE EXISTS(SELECT TaskID FROM dbo.tempExpense)
    BEGIN
        -- 也可以使用top 1
        SET ROWCOUNT 1
        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)>0 set @budgetcode='B004_1'; else if CHARINDEX('B003_1',@budgetnum)>0 set @budgetcode='B003_1'; else if CHARINDEX('B027高管手机',@budgetnum)>0 set @budgetcode='B027高管手机'; else if CHARINDEX('B002',@budgetnum)>0 set @budgetcode='B002'; else if CHARINDEX('BA05',@budgetnum)>0 set @budgetcode='BA05'; else if CHARINDEX('B003',@budgetnum)>0 set @budgetcode='B003'; else if CHARINDEX('B004',@budgetnum)>0 set @budgetcode='B004'; else if CHARINDEX('B006',@budgetnum)>0 set @budgetcode='B006'; else if CHARINDEX('B007',@budgetnum)>0 set @budgetcode='B007'; else if CHARINDEX('B010',@budgetnum)>0 set @budgetcode='B010'; else if CHARINDEX('B017',@budgetnum)>0 set @budgetcode='B017'; else if CHARINDEX('B021',@budgetnum)>0 set @budgetcode='B021'; else if CHARINDEX('B022',@budgetnum)>0 set @budgetcode='B022'; else if CHARINDEX('B027',@budgetnum)>0 set @budgetcode='B027'; else if CHARINDEX('B030',@budgetnum)>0 set @budgetcode='B030'; else if CHARINDEX('B031',@budgetnum)>0 set @budgetcode='B031'; else if CHARINDEX('B032',@budgetnum)>0 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 0 DELETE FROM dbo.tempExpense WHERE TaskID=@task; END
  • 相关阅读:
    常用数据验证
    js regx验证==== 正则
    sql单列合并
    msdn的网址 sql相关
    Json城市列表
    Ubuntu安装SSH服务器故障分析及解决办法(错误1:E:软件包 openssh-server 还没有可供安装的候选者,错误2:E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系)
    小样儿老师:我的嵌入式学习之路(一)
    J
    归并排序的相关用法
    I
  • 原文地址:https://www.cnblogs.com/sandswitch/p/10191980.html
Copyright © 2011-2022 走看看