consulta compleja Sql server
Publicado por Tulio (3 intervenciones) el 29/02/2012 01:29:59
buenas tardes espero me puedan ayudar estoy utilizando sqlserver2005 tengo 4 tablas las cuales son empleados, tickets, descuentos, movimientos se sabe que un empleado puede meter variostickets de peso y cada ticket tiene una tarifa diferente mediante la multiplicacion de estos sacamos el ingreso del empleado, asi mismo los empleados tienen descuentos y estos se hacen por medio de movimientos y pueden ser varios.
tengo dos consultas las cuales pueden sacar los datos sin embargo al juntarlas se duplican los datos al hacer la suma, se las dejo para que me orienten.
esta saca el total de peso, su ingreso, por empleado:
select a.cveEmpleado,SUM(b.pesoNeto) as totalpesoneto,sum(b.pesoNeto*b.tarifa) as totalingreso from tb_Empleados a
inner join tb_Ticket b on(a.cveEmpleado=b.cveEmpleado)
group by a.cveEmpleado
y esta los descuentos por empleado:
select a.cveEmpleado,SUM(c.importe)as importe from tb_Empleados a
inner join tb_Descuentos b on(a.cveEmpleado=b.idDescuento)
inner join tb_Movimientos c on(b.idDescuento=c.idDescuento)
inner join tb_Ticket d on(a.cveEmpleado=d.cveEmpleado)
group by a.cveEmpleado
tb_Empleados
(
cveEmpleado,
nombre
);
tb_Tickets
(
idTicket,
pesoNeto,
cveEmpleado,
tarifa
);
tb_Descuentos
(
idDescuento int ,
concepto int
);
tb_Movimientos
(
idMovimiento,
idDescuento,
importe
);
lo que se pretende es sacar en una consulta los siguientes campos:
cveEmpleado
totalPeso (es la suma de todos sus pesos).
ingreso (es la suma de sus pesos*tarifas).
descuentos (los decuentos de los empleados).
total (la resta de ingreso-descuentos).
espero me puedan ayudar de antemano muchas gracias
tengo dos consultas las cuales pueden sacar los datos sin embargo al juntarlas se duplican los datos al hacer la suma, se las dejo para que me orienten.
esta saca el total de peso, su ingreso, por empleado:
select a.cveEmpleado,SUM(b.pesoNeto) as totalpesoneto,sum(b.pesoNeto*b.tarifa) as totalingreso from tb_Empleados a
inner join tb_Ticket b on(a.cveEmpleado=b.cveEmpleado)
group by a.cveEmpleado
y esta los descuentos por empleado:
select a.cveEmpleado,SUM(c.importe)as importe from tb_Empleados a
inner join tb_Descuentos b on(a.cveEmpleado=b.idDescuento)
inner join tb_Movimientos c on(b.idDescuento=c.idDescuento)
inner join tb_Ticket d on(a.cveEmpleado=d.cveEmpleado)
group by a.cveEmpleado
tb_Empleados
(
cveEmpleado,
nombre
);
tb_Tickets
(
idTicket,
pesoNeto,
cveEmpleado,
tarifa
);
tb_Descuentos
(
idDescuento int ,
concepto int
);
tb_Movimientos
(
idMovimiento,
idDescuento,
importe
);
lo que se pretende es sacar en una consulta los siguientes campos:
cveEmpleado
totalPeso (es la suma de todos sus pesos).
ingreso (es la suma de sus pesos*tarifas).
descuentos (los decuentos de los empleados).
total (la resta de ingreso-descuentos).
espero me puedan ayudar de antemano muchas gracias
Valora esta pregunta
0