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
答案 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