私は、システム内の特定の月にトランザクションが開始された回数を照合プロセスのために評価しようとしています。SELECT IN failing - large dataset
トランザクション参照は前月に作成することができますので、これらのトランザクションを最終的なカウントから除外しようとしています。最初の考えは「WHERE IN」型アプローチを使用することでしたが、結果は常に0ですクエリを単独で実行するときと違うので、サブクエリには除外するエントリがあります。
私は、サブクエリで大きなデータセットが返されたときに "WHERE IN"型のクエリが信頼できないと読んだことがありますが、この場合は目標を達成するためにこれを再作成する方法がわかりません。このようなやり方が間違っていると思われる場合は、先に進みます。
現在のクエリは以下のとおりです - あなたの助けに感謝:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE PaymentDate < '20110801')
EDIT OKさらに答えに、それはNULL値が間違って私をやっていたようだ...おかげで - ここでは、編集されたコードです場合には誰もが将来的には、ここでつまずく:
SELECT Count(DISTINCT TransactionRef)
FROM Payments
WHERE Month(PaymentDate) = 8
AND Year(PaymentDate) = 2011
AND TransactionRef NOT IN
(SELECT DISTINCT TransactionRef
FROM Payments WHERE TransactionRef IS NOT NULL AND PaymentDate < '20110801')
存在しません。これは常に 'NOT IN'がゼロの結果を返すようにします。 –
ところで「どこの "タイプクエリが信頼できないのですか?"私は同じソースから他のものを無視することをお勧めします。 –
ありがとう:) Googleのパワーは、ばかばかしい接線で完全にオフに送信するようです。 – Chris