2012-10-08 2 views
0

I가 다음 쿼리 :COUNT_BIG()가 1로 반환 0

SELECT  dbo.Enquiries.EnquiryID, COUNT_BIG(dbo.Enquiries.EnquiryID) AS AttachedLines 
FROM   dbo.Enquiries INNER JOIN 
         dbo.QuoteLines ON dbo.Enquiries.EnquiryID = dbo.QuoteLines.EnquiryID 
GROUP BY dbo.Enquiries.EnquiryID 

내 질문의 일부는 0 QuoteLines 첨부, 아직 내보기에, 그들은 1로 돌아왔다?

+0

'QUOTLINE'에 일치하는 레코드가 없으면이 쿼리 ('INNER JOIN'사용)는 '1'의 수를 반환 할 수 없습니다. 이것은 실제로 해당 테이블에 해당 EnquiryID 값에 대한 레코드가 있음을 의미합니다. 잘못된 결과를 보여주는 특정 'EnquiryID'에 대한 예제 데이터를 두 테이블에서 올릴 수 있습니까? – MatBailie

+2

큰 쿼리의 일부로이 하위 쿼리입니까? 그렇지 않다면 여기에 심각한 불일치가 있습니다.'dbo.Eququiries '는 FROM 절에 나타나지 않습니다. –

+1

'Enquiries'와 동의어 인'DayBookEnquiries'를 사용하면 꽤 재미있을 것입니다. 내 수정 구슬이 그렇게 알려줍니다. – RichardTheKiwi

답변

2

COUNT_BIG(*)을 열 (예 : COUNT_BIG(SomeColumn) - 열의 NULL을 건너 뜁니다. 귀하의 실제 쿼리가 LEFT JOIN을 사용한다고 가정합니다. 상황에

, 당신은 내 질문의 일부는 0 QuoteLines이 붙어있다

상태, 아직 내보기에, 그들은 1로 반환?

이렇게하면 INNER JOIN이 실패하게됩니다. 따라서 잘못된 쿼리를 보였거나 진술이 잘못되었습니다. 두 경우 모두 다음 쿼리를 사용하여 문제를 해결할 수 있습니다.

SELECT dbo.Enquiries.EnquiryID, 
     dbo.QuoteLines.* 
FROM dbo.DayBookEnquiries INNER JOIN 
     dbo.QuoteLines ON dbo.Enquiries.EnquiryID = dbo.QuoteLines.EnquiryID 

QuoteLines에서 하나 이상의 레코드가 표시됩니다.

+0

나는 내 대답을 업데이트했지만 시도했지만 여전히 1을 반환했습니다 – CallumVass

+0

이것은 매우 이상하게 읽습니다. 당신은'COUNT_BIG (*)'를'COUNT_BIG (QuoteLines.EnquiryID)'또는 유사하게 변경한다는 의미입니까? – MatBailie

+0

오, 시도해 보겠습니다. 견적 라인. 문의 ID – CallumVass

관련 문제