2012-10-18 6 views
3

스택 및 그룹화 된 하이 차트를 채우기 위해 데이터에 0 값을 추가해야합니다. 나는 숫자 테이블을 시도했지만 날짜마다 누락 된 모든 empoloyee에 대해 0을 추가하는 방법을 알 수 없습니다. 그래서 나는이 :누락 된 데이터에 대해 0을 채우는 Sql 쿼리

표 (데이텀, 직원, 번호, 스택)

2012-10-13 00:00:00.000 Nick 3 corporate 
2012-10-14 00:00:00.000 Jack 1 private 
2012-10-15 00:00:00.000 Yannick 1 corporate 
2012-10-15 00:00:00.000 Jack 2 corporate 

내가 필요

2012-10-13 00:00:00.000 Nick 3 corporate 
2012-10-14 00:00:00.000 Nick 0 corporate 
2012-10-15 00:00:00.000 Nick 0 corporate 
2012-10-13 00:00:00.000 Jack 0 private 
2012-10-14 00:00:00.000 Jack 1 private 
2012-10-15 00:00:00.000 Jack 0 private 
2012-10-13 00:00:00.000 Yannick 0 corporate 
2012-10-14 00:00:00.000 Yannick 0 corporate 
2012-10-15 00:00:00.000 Yannick 1 corporate 
2012-10-13 00:00:00.000 Jack 0 corporate 
2012-10-14 00:00:00.000 Jack 0 corporate 
2012-10-15 00:00:00.000 Jack 2 corporate 

내가 커서를 사용하는 것이 필요하거나 더 나은 트릭이 무엇입니까?

+2

어떤 rdbms를 사용하고 있습니까? SQL 서버, MySQL은, 오라클? – Taryn

+0

음 ... 많은 zeroresults가있는 데이터베이스를 "중독"하는 대신 출력을 디코딩 할 때 CASE WHEN을 사용하는 것이 좋습니다 ... –

+0

@bluefeet SQL Server 2005 –

답변

5
select dates.Datum, employees.Employee, isnull(tbl.Number,0), employees.Stack 
     from (select distinct Datum from tbl) dates 
cross join (select distinct Employee, Stack from tbl) employees 
left join tbl on tbl.Datum=dates.Datum and tbl.Employee = employees.Employee 
        and tbl.Stack = employees.Stack 
+0

이것은 훌륭하다! – Kaf

+0

이것은 매우 좋지만 날짜에 대한 레코드가 하나 이상있는 경우에만 작동합니다 – paul

+0

'날짜별로 누락 된 모든 직원에게'(데이터 내에서) '라고 생각합니다. – RichardTheKiwi

관련 문제