【问题标题】:SQL - INSERT AND UPDATE Table from a Temp TableSQL - 从临时表插入和更新表
【发布时间】:2017-11-16 18:50:34
【问题描述】:

我正在尝试将一些数据插入到临时表(#temptable)中,插入后我想执行 Sum(amount),它与客户名称和账单 ID 匹配相同的 ID 和组,我想选择这些匹配 ID 中可用的最早日期。经过所有这些操作后,我想更新原始表(billtable)

Bill ID   Amount  CUstName   Duedate

12         12.2     ABC        12222016
12         22.2     ABC        12112016
13         23.22    ABC        12102016

Bill ID   Amount  CUstName   Duedate

12         34.4     ABC        12112016
13         23.22    ABC        12102016

【问题讨论】:

  • 更新意味着,你想更新一行并删除所有其他具有相同Bill ID的行?
  • 到目前为止你的代码中有什么?
  • @nCessity 我想在临时表上执行这些操作,并想将更新值插入到账单表中
  • @JacobH 我执行插入到#temptable(Bill ID,Amount,CustName,Duedate)值(Bill ID,Amount,CustName,Duedate)INSERTINTO billtable SELECT BillID,SUM(Amount),CustName,MIN (InvoiceDate) GROUPBY BillID, CustName ;
  • 好的,现在编写您的 select 语句以对 #temptable 中的值求和。然后将该语句用作更新的 FROM 子句。将每个部分分解为单独的查询时,SQL 更容易编写。

标签: sql sql-server stored-procedures


【解决方案1】:

你需要像下面这样的东西

If(OBJECT_ID('tempdb..#t') Is Not Null)
Begin
    Drop Table #t
End

 create table #t
(
billid varchar (50),
amount decimal,
cust varchar (50),
duedate datetime
)

insert into #t (billid,amount,cust,duedate) values ('12',12.2,'abc','20161222')
insert into #t (billid,amount,cust,duedate) values ('12',22.2,'abc','20161211')
insert into #t (billid,amount,cust,duedate) values ('13',23.22,'abc','20161210')
insert into #t (billid,amount,cust,duedate) values ('12',34.4,'abc','20161211')
insert into #t (billid,amount,cust,duedate) values ('13',23.22,'abc','20161210')

select billid,sum(amount),MIN(duedate)
from #t
group by billid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多