Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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_Sql Server_Tsql_Datetime_Inventory Management - Fatal编程技术网

SQL查询,根据预订日期获取免费车辆

SQL查询,根据预订日期获取免费车辆,sql,sql-server,tsql,datetime,inventory-management,Sql,Sql Server,Tsql,Datetime,Inventory Management,这是我的库存表 这是我的预约库存记录表 还有一个带有不同字段的主预订表,其中包含特定预订的详细信息 一旦在主预订表中创建了一行,插入触发器就会插入到EngagedInventoryLog表中,其中包含从主预订表中预订的车辆各自的PickupDate、DropDate和RegistrationNo 现在,如果我要用PickupDate=2019年9月15日10:00:00预订 且DropDate=2019年9月16日16:00:00,则只有免费或未预订的车辆可用,或者换句话说,与EngagedIn

这是我的库存表

这是我的预约库存记录表

还有一个带有不同字段的主预订表,其中包含特定预订的详细信息

一旦在主预订表中创建了一行,插入触发器就会插入到EngagedInventoryLog表中,其中包含从主预订表中预订的车辆各自的PickupDate、DropDate和RegistrationNo

现在,如果我要用PickupDate=2019年9月15日10:00:00预订 且DropDate=2019年9月16日16:00:00,则只有免费或未预订的车辆可用,或者换句话说,与EngagedInventoryLog、PickupDate和DropDate列中的记录不冲突。i、 东区2345

类似地,在2019年9月10日10:00:00至2019年9月13日10:00:00的情况下,我们必须获得两辆带有RegisNo(即12342345)的车辆

在2019年9月10日10:00:00至2019年9月17日10:00:00的情况下,不得有车辆

这是我尝试过的查询,但在某些情况下不起作用

SELECT DISTINCT Id, VehicleName + '#' + ISNULL(RegisNo, '') AS 'Model'
FROM            Inventory
WHERE SupplierName = 'John'
AND
RegisNo NOT IN (
SELECT RegisNo FROM EngagedInventoryLog
WHERE
CONVERT(DATETIME,'15/09/2019 10:00:00',103) <  DropDate
    AND convert(DATETIME,'16/09/2019 16:00:00',103) > PickupDate

我将使用具有“不退出”条件的相关子查询来拉出与目标范围重叠的不存在接合的车辆:

SELECT *
FROM Inventory i
WHERE 
    SupplierName = 'John'
    AND NOT EXISTS (
        SELECT 1
        FROM EngagedInventory e
        WHERE 
            e.RegisNo = i.RegisNo
            AND @PickupDate <= e.DropDate 
            AND @DropDate >= e.PickupDate
    )

我将使用具有NOT EXTITS条件的相关子查询来拉出与目标范围重叠的不存在接合的车辆:

SELECT *
FROM Inventory i
WHERE 
    SupplierName = 'John'
    AND NOT EXISTS (
        SELECT 1
        FROM EngagedInventory e
        WHERE 
            e.RegisNo = i.RegisNo
            AND @PickupDate <= e.DropDate 
            AND @DropDate >= e.PickupDate
    )

请不要将样本数据发布为图像,而应发布DDL DML或将其发布为格式化文本,或者更好地解释为什么PickupDate列在第一张图像中没有日期?您不知道日期“Honda City”是@Sami吗?@Larnu Honda City预订的日期是2019年9月16日至2019年9月21日。@Larnu不,我想这是从col的名称开始的日期,我不知道什么是“本田城”。似乎这是一辆车,而不是之前发布的日期请不要将样本数据发布为图像,而是发布DDL DML或将其发布为格式化文本,或者更好为什么PickupDate列在第一张图像中没有日期?您不知道日期是什么时候,“Honda City”是@Sami?@Larnu Honda City的预订日期是2019年9月16日至2019年9月21日。@Larnu不,我想是从col的名字开始的,我不知道“Honda City”是什么。似乎是一辆车,而不是之前发布的日期。它在2019年9月13日至2019年9月15日期间不起作用,因为在这种情况下,1234应该被取消。@HamzaKhan:这似乎像预期的那样起作用。我在我的答案中添加了一个DB Fiddle链接供您检查旁注:下次,请将您的数据以表格文本而不是图像的形式发布……它在2019年9月13日至2019年9月15日期间不起作用,因为在这种情况下,1234应该被删除。@HamzaKhan:这似乎像预期的那样起作用。我在我的答案中添加了一个DB Fiddle链接,供您检查旁注:下次,请将您的数据以表格文本而不是图像的形式发布。。。。