Código SQL:
Ver originalCREATE TABLE #temp
(
consecutivo VARCHAR(20),
trabajador VARCHAR(20),
labor1 INT,
labor2 INT,
labor3 INT
)
INSERT INTO #temp VALUES ('01','001' ,1,0,0)
INSERT INTO #temp VALUES ('01','002' ,0,1,0)
INSERT INTO #temp VALUES ('01','003' ,0,0,1)
INSERT INTO #temp VALUES ('01','004' ,0,1,0)
INSERT INTO #temp VALUES ('02','001',0,0,1)
INSERT INTO #temp VALUES ('02','002',0,0,1)
INSERT INTO #temp VALUES ('02','003',0,1,0)
INSERT INTO #temp VALUES ('02','004',1,0,0)
INSERT INTO #temp VALUES ('03','001',1,0,0)
INSERT INTO #temp VALUES ('03','002',1,0,0)
INSERT INTO #temp VALUES ('03','003',1,0,0)
INSERT INTO #temp VALUES ('03','004',1,0,0)
INSERT INTO #temp VALUES ('04','001',0,1,0)
INSERT INTO #temp VALUES ('04','002',0,1,0)
INSERT INTO #temp VALUES ('04','003',1,0,0)
INSERT INTO #temp VALUES ('04','004',0,0,1)
CREATE TABLE #temp2
(
consecutivo VARCHAR(20),
fecha datetime
)
INSERT INTO #temp2 VALUES ('01','2013-11-01')
INSERT INTO #temp2 VALUES ('02','2013-11-02')
INSERT INTO #temp2 VALUES ('03','2013-11-03')
INSERT INTO #temp2 VALUES ('04','2013-11-04')
SELECT trabajador,SUM([2013-11-01]) AS [2013-11-01],SUM([2013-11-02]) [2013-11-02],SUM([2013-11-03]) [2013-11-03],SUM([2013-11-04]) [2013-11-04]
FROM
(
SELECT trabajador,[2013-11-01],[2013-11-02],[2013-11-03],[2013-11-04] FROM
(
SELECT t1.consecutivo,t1.trabajador,
CASE WHEN labor1=1 THEN 1
WHEN labor2=1 THEN 2
WHEN labor3=1 THEN 3 END AS labor,
fecha FROM #temp AS t1
LEFT JOIN #temp2 AS t2 ON (t1.consecutivo=t2.consecutivo)
WHERE fecha BETWEEN '2013-11-01' AND '2013-11-04'
) AS SOURCE
pivot
(
MAX(labor) FOR fecha IN ([2013-11-01],[2013-11-02],[2013-11-03],[2013-11-04])
) AS pvt
) AS t1 GROUP BY trabajador
Para la parte de las fechas, se puede lograr con un query dinamico tomando en cuenta la diferencia de dias entre la fecha inicial y la fecha final y sacando las diferentes fechas con un ciclo para poder armar la cadena como quieres :P pero eso si ya seria por tu cuenta o con costo($$$$) adicional(se aceptan pagos por paypal :P)