2015-10-23 37 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

谢谢,但这显示我配置正确的时间表。我已经更新了查询的输出结果,以及每个关键字的值对于正确和不正确的策略应该是什么。我也插入我期望能够显示的输出。 –