SQL - DIFERENCIA ENTRE DOS RESULTADOS SELECT

 
Vista:

DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por DAVID FDEZ (3 intervenciones) el 30/11/2007 16:24:01
Hola buenas, tengo una duda. Tengo que calcular el numero de Bajas totales. Y tengo que restarle al numero de Bajas el numero de Altas ...

el numero de bajas es
SELECT * FROM PeopleHistory WHERE Date IS NOT NULL OR (Date IS NULL AND Shop IS NULL)
el numero de altas es
SELECT * FROM PeopleHistory WHERE Shop IS NOT NULL AND Date IS NULL

Date = datetime

Shop = integer

Id_person = integer (identificador unico)


como podria hacer ???

Graciñas de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por Liliana (426 intervenciones) el 30/11/2007 16:58:33
Hola,
Podrías resolverlo con CASE:

SELECT Resta =
SUM( CASE WHEN Date IS NOT NULL OR (Date IS NULL AND Shop IS NULL) THEN 1 ELSE 0 END) -- BAJAS
-
SUM( CASE WHEN Shop IS NOT NULL AND Date IS NULL THEN 1 ELSE 0 END) -- ALTAS
FROM PeopleHistory

Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por David (3 intervenciones) el 03/12/2007 10:29:05
Gracias Liliana, y si quisiera sacar un listado de toda la gente que es baja (listar todos los id_integer) ???
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por Liliana (426 intervenciones) el 03/12/2007 12:30:31
Hola,
bueno, no conozco tu información, así que sin datos, lo único que se me ocurre es que el primer query que mandaste te lista todas las bajas, al menos eso es lo que nos dijiste.
De no ser así, por favor danos más información.
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por DavidFernadnez (3 intervenciones) el 03/12/2007 12:37:15
Hola otra vez y gracais por responder tan rapido Liliana

Es un Historico de Personas, y tengo que listar las bajas de la empresa en un intervalo concreto de tiempo ...

El primer select me lista todas las bajas, pero puede ser que el mismo empleado tenga grabado en el historico una baja por ejemplo , y despues de irse de la empresa, vuelva a trabajar en ella, con lo cual se le añadirira un registro como Alta en la empresa (un regsitro aun no cerrado)

graciñas por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:DIFERENCIA ENTRE DOS RESULTADOS SELECT

Publicado por Liliana (426 intervenciones) el 03/12/2007 16:31:25
Hola David,
hay más de una manera de hacer esto, pero creo que esta es la más clara en este ejemplo:

select t1.persona
from tabla t1
where (condiciones que definen la baja)
and t1.persona not exists
(select t2.persona
from tabla t2
where (condiciones que definen el alta)
and t1.persona = t2.persona
and t1.fecha < t2.fecha)

Espero que te sirva,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar