Otro SELECT JOIN

14/12/2007 - 13:23 por Cristian Meneses | Informe spam
Buenas a todos
Tengo dos tablas que a continuacion detallo con datos de prueba


if NOT (object_id('tempdb.dbo.#AuxRango') is null)
DROP TABLE #AuxRango
CREATE TABLE #AuxRango
(Hora tinyint)
DECLARE @i tinyint
SET @i = 0
WHILE @i < 24
BEGIN
INSERT #AuxRango (Hora) VALUES (@i)
SET @i = @i + 1
END
SELECT * FROM #AuxRango

if NOT (object_id('tempdb.dbo.#Aux') is null)
DROP TABLE #Aux
CREATE TABLE #Aux
(Entrada tinyint,
Salida tinyint,
SegEntrada int,
SegSalida int)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (8, 10,
2700, 3000)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (12, 14,
3300, 1800)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (18, 21,
3050, 2855)
SELECT * FROM #Aux


La idea es que en el JOIN quede algo asi
Hora Segs

0 0
1 0
2 0
3 0
...
8 2700
9 3600 (hora completa porque esta entre las 8 y las 10)
10 3000
11 0
12 3300
13 3600
14 1800
15 0
16 0
17 0
18 3050
19 3600
20 3600
21 2855
22 0
23 0


Espero que se entienda
Gracias por adelantado. Saludos


Cristian Meneses
SQL 2000 SP4
 

Leer las respuestas

#1 Carlos M. Calvelo
14/12/2007 - 16:31 | Informe spam
Hola Cristian,

On 14 dec, 13:23, Cristian Meneses wrote:
Buenas a todos
Tengo dos tablas que a continuacion detallo con datos de prueba

if NOT (object_id('tempdb.dbo.#AuxRango') is null)
DROP TABLE #AuxRango
CREATE TABLE #AuxRango
(Hora tinyint)
DECLARE @i tinyint
SET @i = 0
WHILE @i < 24
BEGIN
INSERT #AuxRango (Hora) VALUES (@i)
SET @i = @i + 1
END
SELECT * FROM #AuxRango

if NOT (object_id('tempdb.dbo.#Aux') is null)
DROP TABLE #Aux
CREATE TABLE #Aux
(Entrada tinyint,
Salida tinyint,
SegEntrada int,
SegSalida int)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (8, 10,
2700, 3000)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (12, 14,
3300, 1800)
INSERT #Aux (Entrada, Salida, SegEntrada, SegSalida) VALUES (18, 21,
3050, 2855)
SELECT * FROM #Aux

La idea es que en el JOIN quede algo asi
Hora Segs

0 0
1 0
2 0
3 0
...
8 2700
9 3600 (hora completa porque esta entre las 8 y las 10)
10 3000
11 0
12 3300
13 3600
14 1800
15 0
16 0
17 0
18 3050
19 3600
20 3600
21 2855
22 0
23 0




SELECT r.Hora,
case when r.Hora = a.Entrada then a.SegEntrada
when r.Hora = a.Salida then a.SegSalida
when r.Hora > a.Entrada and r.Hora < a.Salida then 3600
else 0
end as Segs
FROM #AuxRango r left join #Aux a
on r.Hora between a.Entrada and a.Salida

Va siendo hora de aprender bien SQL eh!? :-)

Saludos,
Carlos

Preguntas similares