2015-10-23 33 views
0

我的任務是創建一個查詢,比較表中的兩列以查看計劃策略的名稱是否與計劃運行備份的時間相關。目前,我已經想出了唯一的方法,我知道如何去做,而且有48個選擇語句用於備份時間,如下面的查詢。我認爲可能有更好或更快的方法來做到這一點,但這可能超出我對SQL查詢的知識。用於比較兩列中的所有行的SQL查詢

SQL查詢:

select  
    schedulePolicy, scheduleName, schedbackuptype, 
    schedbackupday, schedbackupTime 
from 
    commserv.dbo.CommCellBKScheduleSummary 
where 
    schedulePolicy like '%00:00%' 
    and schedbackupTime not like '%00:00%' 
    or schedulePolicy like '%01:00%' 
    and schedbackupTime not like '%01:00%' 

實例計劃策略

正確的調度策略:

schedulePolicy: 01_SUN_Full 00:00 
schedbackupTime: 00:00 

不正確的調度策略:

schedulePolicy: 01_MON_Full 00:00 
schedbackTime: 02:00 

輸出爲查詢上面應顯示下面的輸出,因爲備份計劃在不正確的時間運行。

schedulePolicy: 01_MON_Full 00:00 
scheduleName: Full 
schedbackuptype: Full 
schedbackupday: Monday 
schedbackupTime: 02:00 
+1

編輯你的問題,顯示兩列的樣本值。 –

+2

您是否將時間戳值存儲爲字符?!?改用適當的數據類型!還標記使用dbms,因爲它們中的許多在日期/時間方面遠不符合ANSI SQL標準。 – jarlh

+0

我編輯了問題的主體,將示例計劃策略放入代碼塊中,並刪除了謝謝。有關更多信息,請參閱Meta Stack Exchange上的[本文](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts)。 – theB

回答

0

這裏是你如何返回行,其中在schedulePolicy時間字符串不schedbackupTime的時間字符串匹配,假設schedulePolicy的格式將始終是相同的:

SELECT schedulePolicy, scheduleName, schedbackuptype, schedbackupday, schedbackupTime 
FROM commserv.dbo.CommCellBKScheduleSummary 
WHERE RIGHT(schedulePolicy, 5) != schedbackupTime 
+0

感謝您的回覆,但2列絕不會相同。 schedPolicy的名稱是01_SUN_Full_01:30,schedbackupTime應該是01:30。我想解析schedulePolicy的內容以查看備份時間是否與計劃名稱相關。 –

+0

請參閱編輯 – happyjack

+0

謝謝,但這顯示我配置正確的時間表。我已經更新了查詢的輸出結果,以及每個關鍵字的值對於正確和不正確的策略應該是什麼。我也插入我期望能夠顯示的輸出。 –