选择仅在提供的日期范围内有记录的记录

时间:2016-02-25 18:22:20

标签: sql sql-server tsql

在子表包含日期时间列的父子表方案中,我只选择那些仅在提供的日期范围内具有子记录的父记录。

e.g。购物车 - 购物车详细信息购物车详细信息有“DateAdded”列,我想选择本周只有“添加日期”的所有购物车记录。

类似的东西:

SELECT * 
FROM Cart
JOIN CartDetail ON CartDetail.CartId = Cart.Id
???

我不确定如何选择CartDetail.DateAdded仅在提供的日期范围内的购物车记录。

1 个答案:

答案 0 :(得分:0)

您可以使用NOT EXISTS

SELECT * 
FROM Cart AS c
INNER JOIN CartDetail AS cd ON cd.CartId = c.Id
WHERE cd.DateAdded BETWEEN @start_date AND @end_date
      AND 
      NOT EXISTS (SELECT 1
                  FROM CartDetail AS cd2
                  WHERE cd2.CartId = c.Id AND
                        cd2.DateAdded < @start_date OR cd2.DateAdded > @end_date)