Sql server 具有查询和多重比较的T-SQL问题

Sql server 具有查询和多重比较的T-SQL问题,sql-server,Sql Server,假设有这个表: |ORDER_NUMBER|CREATION_DATE| STATUS | |201700014587| 2017-08-01 |STATUS1 | |201700014587| 2017-08-03 |STATUS2 | |201700013131| 2017-08-07 |STATUS1 | |201700013131| 2017-08-11 |STATUS2 | |201700014587| 2017-08-13 |STAT

假设有这个表:

|ORDER_NUMBER|CREATION_DATE| STATUS | |201700014587| 2017-08-01 |STATUS1 | |201700014587| 2017-08-03 |STATUS2 | |201700013131| 2017-08-07 |STATUS1 | |201700013131| 2017-08-11 |STATUS2 | |201700014587| 2017-08-13 |STATUS3 | |201700013131| 2017-08-14 |STATUS4 | |订单|编号|创建|日期|状态| |201700014587 | 2017-08-01 |状态1| |201700014587 | 2017-08-03 |状态2| |20170001313 | 2017-08-07 |状态1| |20170001313 | 2017-08-11 |状态2| |201700014587 | 2017-08-13 |状态3| |20170001313 | 2017-08-14 |状态4| 如何选择所有订单:

  • STATUS1
    STATUS2
    STATUS4
  • 2017-08-01
    2017-08-15
  • STATUS3
  • 在这个例子中,我只提取n阶<代码>20170001313。
    谢谢。

    您可以通过如下方式使用
    不存在来实现这一点:

    SELECT DISTINCT ORDER_NUMBER
        FROM YourTable T
        WHERE STATUS IN('STATUS1', 'STATUS2', 'STATUS4')
            AND CREATION_DATE BETWEEN '20170801' AND '20170815'
            AND NOT EXISTS
                (
                   SELECT * FROM YourTable
                       WHERE ORDER_NUMBER = T.ORDER_NUMBER
                          AND STATUS = 'STATUS3'
                );
    

    到目前为止你试过什么?发布一些您测试过的代码,然后您将从中获得更多建议。您不需要notexists,因为您已经在中筛选了相同的代码condition@JayasuryaSatheesh当然,我不需要存在,因为OP只需要不存在状态为3的行的订单。