Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 server 2005 如何根据仅在特定时间段内存在的记录返回记录?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 如何根据仅在特定时间段内存在的记录返回记录?

Sql server 2005 如何根据仅在特定时间段内存在的记录返回记录?,sql-server-2005,Sql Server 2005,我有一张发票和客户代码表。我只想吸引自2009年以来从未与我们做过任何业务的客户 我的常规select语句很简单 SELECT INVOICE.CUSTOMER_CODE FROM INVOICES WHERE INVOICES.ORDER_DATE <= '01-01-2010' 但是,该声明还提取了2010年前后做过业务的客户的客户代码。我只想要那些在2010年之前没有做过生意的客户。这看起来很简单,但我不知道如何做到这一点,我的谷歌搜索只显示了如何做一系列的日期。我想也许我已经找

我有一张发票和客户代码表。我只想吸引自2009年以来从未与我们做过任何业务的客户

我的常规select语句很简单

SELECT INVOICE.CUSTOMER_CODE FROM INVOICES

WHERE INVOICES.ORDER_DATE <= '01-01-2010'

但是,该声明还提取了2010年前后做过业务的客户的客户代码。我只想要那些在2010年之前没有做过生意的客户。这看起来很简单,但我不知道如何做到这一点,我的谷歌搜索只显示了如何做一系列的日期。

我想也许我已经找到了答案。我得再检查一下才能确定

SELECT INVOICE.CUSTOMER_CODE FROM INVOICE

WHERE INVOICE.ORDER_DATE < '01-01-2010'
AND INVOICE.CUSTOMER_CODE NOT IN (SELECT INVOICE.CUSTOMER_CODE FROM INVOICE WHERE INVOICE.ORDER_DATE >= '01-01-2010')

您还可以执行以下操作:

; with cc as (
    Select Distinct
           INVOICE.CUSTOMER_CODE
    From   Invoice
    Where  INVOICE.ORDER_DATE >= '01-01-2010'
)
Select INVOICE.CUSTOMER_CODE
From   INVOICE
Where  INVOICE.CUSTOMER_CODE not in (select * from cc)

您最新评论中的代码是正确的,但第一个where子句是多余的-以下将起作用:

SELECT INVOICE.CUSTOMER_CODE FROM INVOICE
WHERE INVOICE.CUSTOMER_CODE NOT IN (SELECT INVOICE.CUSTOMER_CODE FROM INVOICE WHERE INVOICE.ORDER_DATE >= '01-01-2010')
发票表包含您的所有客户。您首先在子查询中选择自2009年以来开展业务的所有客户。然后选择所有剩余客户。这也可以通过以下可能更容易理解的代码来实现:

SELECT INVOICE.CUSTOMER_CODE FROM INVOICE
EXCEPT
SELECT INVOICE.CUSTOMER_CODE FROM INVOICE WHERE INVOICE.ORDER_DATE >= '01-01-2010'

使用“不存在”比不存在要好。