创建一个存储过程,使我可以进行计算并将值插入到tempTable中

时间:2018-07-09 14:34:58

标签: sql sql-server stored-procedures

我已经开始处理存储过程以处理一些我需要做的计算。要点是:

Create Table #Temp 
(
    ClientName varchar,
    ClientAddress varchar,
    Units1 int,
    Units2 int,
    UnitsUsed int,
    UnitsSpec int
)

Insert into #Temp (ClientName, ClientAddress, Units1, Units2)
    Select 
        x.ClientName, x.ClientAddress, y.Units1, y.Units2 
    From
        tblClients x 
    Left Join 
        tblClientUnits y On x.clientId = y.clientid

select语句有点复杂,出于可读性考虑,我正在尝试简化它。

到目前为止,所有内容都可以正常工作,因此我创建了一个临时表,插入了所有信息,我现在想做的是针对#Temp表中的最后两列,我需要做一些计算,所以我正在尝试以某种方式重新插入临时表UnitsUsed,该表将是Units1 + Units2的总数,并且对UnitsSpec做同样的事情,它将是Units1 + Units2 / 3

什么是这样做的好方法?这可行吗?

编辑样本数据-所需的最终结果:

ClientName     ClientAddress    Units1     Units2    UnitsUsed    UnitsSpec
---------------------------------------------------------------------------
Bob S          11 Jude Lane     10         20        30           10

3 个答案:

答案 0 :(得分:1)

在您的INSERT语句之后,像这样运行UPDATE语句:

UPDATE #Temp SET UnitsUsed = Units1 + Units2, UnitsSpec = Units1 + (Units2 / 3);

答案 1 :(得分:1)

您可以与其他插入内容同时进行

Create Table #Temp (
    ClientName varchar,
    ClientAddress varchar,
    Units1 int,
    Units2 int,
    UnitsUsed int,
    UnitsSpec int
)

Insert into #Temp (
    ClientName,
    ClientAddress,
    Units1,
    Units2,
    UnitsUsed,
    UnitsSpec
)
Select x.ClientName
    , x.ClientAddress
    , y.Units1
    , y.Units2 
    , (y.Units1 + y.Units2)
    , (y.Units1 + y.Units2) /3
from tblClients x 
    left join tblClientUnits y on x.clientId = y.clientid

答案 2 :(得分:0)

在您的思考中,将“重新插入”替换为“更新”。

或者只是在初始INSERT..SELECT中进行计算。