조정 프로세스에 대해 Google 시스템에서 주어진 달에 트랜잭션이 시작된 횟수를 평가하려고합니다.SELECT IN failing - large 데이터 세트
트랜잭션 참조는 지난 달에 생성 될 수 있으므로 최종 계산에서 해당 트랜잭션을 제외하려고합니다. 첫 번째 생각은 "WHERE IN"유형 접근법을 사용하는 것이지만 결과는 항상 0입니다. 쿼리를 독립적으로 실행할 때와 마찬가지로 하위 쿼리에는 제외해야 할 항목이 있습니다.
"WHERE IN"유형 쿼리가 특히 하위 쿼리에 큰 데이터 집합이 반환 될 때 신뢰할 수 없다는 것을 읽었지만이 경우 목표를 달성하기 위해이 데이터를 다시 작성하는 방법을 알지 못합니다. 그것이하는 것처럼 보이는이 결함이 결함이 있다면 앞으로 나아갈 것입니다.
현재 쿼리는 다음과 같습니다 - 당신의 도움을 주셔서 감사합니다 - 여기에 편집 된 코드입니다 ... OK 자세한 답변을
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')
편집 , 그것은 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')
당신은 probaly'TransactionRef'에 대한'NULL' 값이 존재하는 것이다. 이것은 항상'NOT IN'이 0 개의 결과를 리턴하도록합니다. –
BTW :''어디에서 ""검색어가 신뢰할 수없는 곳에서 읽었습니까? " 동일한 출처의 다른 것을 무시하는 것이 좋습니다. –
감사합니다 :) Google의 힘은 완전히 우스꽝스러운 탄젠트에 하나를 보내는 것 같습니다. – Chris