私は過去3か月間に請求された顧客と顧客ベース全体の差異を解決しようとしています。私は、次のSQL私はまたCustomerCodeフィールドを持つ顧客テーブルになりますと比較することになるSQL Server 2000の2つのデータセットの相違
DECLARE @DateFrom AS DATETIME
SET @DateFrom =
CONVERT(DATETIME, CAST(YEAR(GETDATE()) AS VARCHAR(4)) +
'-' +
CAST(MONTH(DATEADD(MONTH, -3, GETDATE())) AS VARCHAR(2)) + '-01', 120)
DECLARE @DateTo AS DATETIME
SET @DateTo =
CONVERT(DATETIME, CAST(YEAR(GETDATE()) AS VARCHAR(4)) +
'-' +
CAST(MONTH(GETDATE()) AS VARCHAR(2)) + '-01', 120)
SELECT DISTINCT
i.CustomerCode
FROM
Invoice AS i
WHERE
(i.InvoiceDate > @DateFrom AND i.InvoiceDate < @DateTo)
テーブルを使用して請求してきた顧客を計算することができました。
ありがとうございます!これを理解し、ちょうどここに、このメッセージを投稿するのは数分後、私は解決策を見つけしようとしている年齢を過ごした後
EDIT
。 NOT IN句を使用する!
SELECT
c.CustomerCode
FROM
[Customer] AS c
WHERE
c.CustomerCode NOT IN (
SELECT DISTINCT
i.CustomerCode
FROM
[Invoice] AS i
WHERE
(i.InvoiceDate >= @DateFrom AND i.InvoiceDate < @DateTo))
私のシナリオでは、これは管理スタジオでそれぞれテストしたときに以下に述べる手順が速く実行されているようです。
と正確に何をしたいですか?過去3か月間に請求されていないすべての顧客のリスト?どのバージョンのSQL Serverを使用していますか? –
まさにそれ。私はSQL Server 2000を使用しています。私が現在持っているものより優れたソリューションはありますか? – Malachi
いいえ、私はSQL Server 2000では、それが得られるほど簡単だと思います。 –