2015-01-12 125 views
0

SQL不是我的專業領域,所以請耐心等待。從兩個表中添加兩列並將結果插入第三個

我正在使用Veeam備份和複製,我需要一個正在運行的備份成功百分比,不幸的是Veeam沒有提供。我知道它有一個名爲「Name」和「Latest_Result」的列,其中最新結果= 0表示成功。

我已經創建了一個名爲「Bjobs_history」與「名」「Success_Total」「Job_Total」和「Percentage_Success」列的新表

我的計劃是創建一個SQL查詢並增加「1」到每次作業運行時都會顯示「Job_total」列,這一點我認爲我能做到。

然後我只想在工作成功時將「Success_Total」加1。然後我可以計算出這兩個結果的百分比。

所以,如果我有職吧和JOBB每一天都在運行5天,職吧是成功的每一天,但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

什麼是不關於它的工作(即你看到任何錯誤信息)?那些會幫助我們幫助你。更新步驟失敗了嗎?如果你不嘗試更新,但只運行選擇,你會得到正確的結果嗎? –

+0

嗨。抱歉,錯誤提示 - 消息207,級別16,狀態1,行5 列名稱'val1'無效。 –

回答

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 
+0

非常感謝,萬事如意!我會試着弄清楚現在的聲明究竟如何:) –

+0

實際上,我說得太快了,這是第一次運作,但我需要它每天運行,並且「Success_Total」值每次增加1成功的備份。這就是爲什麼我試圖在我寫的原始查詢中總結success_total + latest_result + 1作爲success_total - 這顯然不起作用。 –

+0

嗯,我認爲這回答你的問題。我不明白你在說什麼,試着更好地解釋。也許發佈一些樣本數據和預期結果。 – dario

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 
相關問題