从两个表中添加两列,并将结果插入第三列

时间:2015-01-12 18:52:48

标签: sql-server tsql

SQL不是我的专业领域,所以请耐心等待。

我正在使用Veeam备份和复制,我需要一个正在运行的备份成功率,不幸的是Veeam并没有提供。

Veeam有一个名为“Bjobs”的SQL表(我知道!)它有“Name”和“Latest_Result”的列,其中最新结果= 0表示成功。

我创建了一个名为“Bjobs_history”的新表,其中包含“Name”“Success_Total”“Job_Total”和“Percentage_Success”的列

我的计划是创建一个SQL查询来添加" 1"每次作业运行到“Job_total”列时,我认为我能做到这一点。

然后,我希望仅在作业成功时将“1”添加到“Success_Total”。然后我可以计算这两个结果的百分比。

因此,如果我让JobA和JobB每天都运行5天并且JobA每天都成功,但JobB失败了一次,我的表看起来像这样

Name | Success_Total | Job_total

JobA |     5         |   5

JobB |     4         |   5  

由于Latest_result = 0成功后,我需要在此结果中加1,然后将其添加到“Success_total”列。

这是我必须更新的success_total,它不起作用,任何人都可以帮忙吗?

select latest_result + 1 as val1
from bjobs join bjob_history
on (bjobs.name = BJob_History.name)
where latest_result = 0
update BJob_History  set Success_Total = val1

2 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE BH
SET BH.Success_Total = BH.Success_Total + B.latest_result + 1
FROM BJob_History AS BH
INNER JOIN bjobs AS B
    ON B.name = BH.name
WHERE B.latest_result = 0

答案 1 :(得分:0)

@ king.code

我刚刚在你的陈述中加了一点,现在正在工作,谢谢

UPDATE BH
SET BH.Success_Total = BH.Success_Total + B.latest_result + 1
FROM BJob_History AS BH
INNER JOIN bjobs AS B
ON B.name = BH.name
WHERE B.latest_result = 0