从表中选择所有项目,其中订单在日期之间有任何项目

时间:2015-04-29 15:47:25

标签: sql-server select

我有一个Orders表和一个OrderItem表。我想选择2个日期之间发货的所有OrderItems,并选择在2个日期之外发运的特定类型的其他OrderItem,如果它是Order的一部分{ {1}}在两个日期之间发送OrderItems

当我第一次想到它时,这似乎很容易,但我很难将其置于SQL声明中。我使用SQL Server

编辑:

是的,我熟悉between关键字。我所拥有的是Order,说Order #10001。它有2个项目,01/20/2015附带的产品和02/04/2015标记为已发货的保修。所以当我运行我的查询时:

SELECT * 
FROM OrderItems 
WHERE ShipDate BETWEEN '01/01/2015' AND '01/31/2015'

我只收到1件产品,我也想获得Order上的保修。

希望澄清我的问题。

2 个答案:

答案 0 :(得分:0)

您熟悉BETWEEN关键字吗?

选择...... col BETWEEN AND

如果您在问题中添加更多信息,例如样本数据,我可以详细说明答案。

答案 1 :(得分:0)

你可以这样做:

SELECT * 
FROM OrderItems
WHERE OrderID IN(
                  SELECT DISTINCT OrderID
                  FROM OrderItems 
                  WHERE ShipDate BETWEEN '01/01/2015' AND '01/31/2015'
                )

或者:

SELECT * 
FROM OrderItems oi1
JOIN (
       SELECT DISTINCT OrderID
       FROM OrderItems 
       WHERE ShipDate BETWEEN '01/01/2015' AND '01/31/2015'
     ) oi2 ON oi1.OrderID = oi2.OrderID