2014-12-16 2 views
1

다음 쿼리에 도움이 필요합니다.행을 가져 오지 않지만 값이 필요합니다.

Select date, Source,count(*) as TOTALCOUNT 
from Table A 
where date = '2014-10-15' and Source = 'EMAIL' 
group by date,source 

는 특정 일에 대한 EMAILsource 없습니다. 따라서 행이 없습니다. 하지만 0을 에 받고 싶습니다. EMAIL이 해당 날에는 없지만 다음날 선물 할 수 있습니다. 내가 어떤 행으로 작동하지 ISNULL 기능을 사용

Date,Source, Totalcount 
15/10/14,Email,0 

그것은 같아야는 결과되었습니다.

답변

1

"상수"쿼리를 사용하여 조인을 수행 할 수 있습니다. 그것은 추한 해킹,하지만 트릭해야한다 : 거의 다

SELECT c.date, c.source, COALESCE(totalcount, 0) 
FROM  (SELECT '2014-10-15' AS date, 'EMAIL' AS source) c 
LEFT JOIN (SELECT date, source, COUNT(*) AS totalcount 
      FROM  a 
      GROUP BY date, source) a 
     ON a.date = c.date AND a.source = c.source 
+0

, 나는 당신이'ISNULL (,)를 필요가 있다고 생각을'약' – Sev09

+1

totalcount' Sev09 @ 아, 그래, 종류의 :-(여기에 마크를 놓친 나는 좀 더 ANSI에 친숙한'coalesce'와 함께 갔지만, 당신은 정확합니다. – Mureinik

+0

특정 날짜에 아무런 데이터가없는 경우에 대비하여 모든 질문이있는 테이블을 사용하는 것이 좋을 것입니다. 사례) http://stackoverflow.com/questions/6125504/how-can-i-generate-a-temporary-table-filled-with-dates-in-sql-server-2000 – influent

관련 문제