如何 return 条记录,哪些记录只在特定时间段内存在?
How do I return records based on which records only exist during a certain time period?
我有 table 发票和客户代码。我只想拉那些自 2009 年以来没有与我们有任何业务往来的客户。
我的常规select语句很简单
SELECT INVOICE.CUSTOMER_CODE FROM INVOICES
WHERE INVOICES.ORDER_DATE <= '01-01-2010'
但是,这个语句还拉取了2010年前后做过生意的客户的客户代码,我只想要那些2010年以前没有做过生意的客户。看起来很简单,但我不知道如何做这样做,我的 google 搜索只会显示如何执行一系列日期。
我想也许我已经弄明白了。我必须再做一些检查才能确定。
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')
发票 table 包含您的所有客户。您首先 select 自 2009 年以来开展业务的所有客户(在子查询中)。然后你 select 所有剩余的客户。这也可以通过以下可能更容易理解的代码来完成:
SELECT INVOICE.CUSTOMER_CODE FROM INVOICE
EXCEPT
SELECT INVOICE.CUSTOMER_CODE FROM INVOICE WHERE INVOICE.ORDER_DATE >= '01-01-2010'
我有 table 发票和客户代码。我只想拉那些自 2009 年以来没有与我们有任何业务往来的客户。
我的常规select语句很简单
SELECT INVOICE.CUSTOMER_CODE FROM INVOICES
WHERE INVOICES.ORDER_DATE <= '01-01-2010'
但是,这个语句还拉取了2010年前后做过生意的客户的客户代码,我只想要那些2010年以前没有做过生意的客户。看起来很简单,但我不知道如何做这样做,我的 google 搜索只会显示如何执行一系列日期。
我想也许我已经弄明白了。我必须再做一些检查才能确定。
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')
发票 table 包含您的所有客户。您首先 select 自 2009 年以来开展业务的所有客户(在子查询中)。然后你 select 所有剩余的客户。这也可以通过以下可能更容易理解的代码来完成:
SELECT INVOICE.CUSTOMER_CODE FROM INVOICE
EXCEPT
SELECT INVOICE.CUSTOMER_CODE FROM INVOICE WHERE INVOICE.ORDER_DATE >= '01-01-2010'