Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于比较两列中所有行的SQL查询_Sql_Database - Fatal编程技术网

用于比较两列中所有行的SQL查询

用于比较两列中所有行的SQL查询,sql,database,Sql,Database,我的任务是创建一个查询,比较表中的两列,以查看计划策略的名称是否与计划运行备份的时间相关。目前,我已经想出了我知道如何做到这一点的唯一方法,那就是为备份时间使用48条select语句,如下面的查询。我认为可能有更好或更快的方法来实现这一点,但这可能超出了我对SQL查询的了解 SQL查询: select schedulePolicy, scheduleName, schedbackuptype, schedbackupday, schedbackupTime from

我的任务是创建一个查询,比较表中的两列,以查看计划策略的名称是否与计划运行备份的时间相关。目前,我已经想出了我知道如何做到这一点的唯一方法,那就是为备份时间使用48条select语句,如下面的查询。我认为可能有更好或更快的方法来实现这一点,但这可能超出了我对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

假设schedulePolicy的格式始终相同,则可以返回schedulePolicy中的时间字符串与schedbackupTime中的时间字符串不匹配的行:

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

编辑问题并显示两列的示例值。是否将时间戳值存储为字符?!?请使用正确的数据类型!还使用了标记dbms,因为它们中的许多在日期/时间方面远远不符合ANSI SQL。我编辑了问题的主体,将示例计划策略放入代码块中,并删除了“谢谢”。有关更多信息,请参阅元堆栈交换。感谢您的回复,但这两列将永远不会相同。计划策略名称为01_SUN_Full_01:30,计划备份时间应为01:30。我想分析schedulePolicy的内容,看看备份时间是否与计划名称相关。谢谢,但这显示了正确配置的计划。我已经更新了查询输出应该显示的内容,以及正确和不正确策略的每个键的值。我还插入了我希望显示的输出。是否有方法在schedbackupTime中包含00:00值?