SQL Server - dos consultas en uno

 
Vista:

dos consultas en uno

Publicado por el grinch (2 intervenciones) el 23/01/2008 20:03:48
tengo un problema , deseo realizar una triple consulta, pero con la diferencia que solo se detalle en una solo respuesta por ejemplo :

select * from Cliente
select * from Producto
select * from proveedor

en el analizador de consultas se ejecuta esta consulta, con la diferencia que salen tres cuadricalas diferentes (ose tres respuestas), por que es im portante que se una dos o mas consultas, puesto que en donde trabajo a los vendedores se les paga por porcentajes deacuerdo a los precios de deja, por ello si tenemos 400 productos y 3 porcentajes de 3 tipos de precios, y a eso agregale si es contado o credito ya se imagina la cantidad de formulas que se realiza por cada producto, porjemplo
CODIGO : KOOO1
NOMBRE: CUADERNOS DE 50 HOJAS
PRECIO UNITARIO : $2
*****************************************************************************
COMO SE LES PAGA
-------------------------
CODGIO : 1
PRECIO : 2
SE LES PAGA : 4.78 %
----------------
PRECIO : 2 A +
SELESPAGA : 5.2 %
--------------------
Y ESTO SE REPITE PARA TODOS LOS PRODUCTOS Y HAY QUE AUMENTAR SI ES CONTADO O CREDITO....... POR LO MENOS YO GENERO 10 FORMULAS POR ARCHIVO QUE ME DA UN TOTAL DE 10 RESPUESTAS (10 CUADRICULAS), TE IMAGINAS PARA 400. ESE ES MI INQUIETUD SE PUEDE UNIR ESTAS TIPOS DE FORMLUAS O YA ESTOY SENTENCIADO A TRABAJAR DE ESTA MANERA.

AQUI LES MANDO UNA DE MIS FORMULAS ESTO SOLO ES DE UN ARCHIVO:.......

/************************************* 3.0 *****************************
select E.NOMEMPLEADO,(SUM(d.importe)*3.0)/100 as TotalProc
from facturacion F
inner join empleado e on e.codempleado=f.codempleado
inner join detalle d on d.npedido=f.npedido
inner join producto p on d.codproducto=p.codproducto
inner join tipoproducto tp on tp.codtipoproducto=p.codtipoproducto
inner join proveedor pr on pr.codproveedor=tp.codproveedor
INNER JOIN DOCUMENTO DO ON DO.CODDOCUMENTO=F.CODDOCUMENTO
where d.modalidad='0' AND D.PRECIO>=3.833 AND D.FEMITIDA BETWEEN '12/01/2008' AND '18/01/2008'
AND p.codproducto IN ('K00001','K00002','K00003','K00004')
AND (D.ESTADO='0' OR D.ESTADO='1') and f.CODTIPO='Tip-02' and f.traspaso='0'
group by E.NOMEMPLEADO ORDER BY E.NOMEMPLEADO ASC

/**************** 2.0 % **********************************/
select E.NOMEMPLEADO,(SUM(d.importe)*2.0)/100 as TotalProc
from facturacion F
inner join empleado e on e.codempleado=f.codempleado
inner join detalle d on d.npedido=f.npedido
inner join producto p on d.codproducto=p.codproducto
inner join tipoproducto tp on tp.codtipoproducto=p.codtipoproducto
inner join proveedor pr on pr.codproveedor=tp.codproveedor
INNER JOIN DOCUMENTO DO ON DO.CODDOCUMENTO=F.CODDOCUMENTO
where d.modalidad='0' AND D.PRECIO=3.750 AND D.FEMITIDA BETWEEN '12/01/2008' AND '18/01/2008'
AND p.codproducto IN ('K00001','K00002','K00003','K00004')
AND (D.ESTADO='0' OR D.ESTADO='1') and f.CODTIPO='Tip-02'and f.traspaso='0'
group by E.NOMEMPLEADO ORDER BY E.NOMEMPLEADO ASC

/**************** 1.5 % **********************************/
select E.NOMEMPLEADO,(SUM(d.importe)*1.5)/100 as TotalProc
from facturacion F
inner join empleado e on e.codempleado=f.codempleado
inner join detalle d on d.npedido=f.npedido
inner join producto p on d.codproducto=p.codproducto
inner join tipoproducto tp on tp.codtipoproducto=p.codtipoproducto
inner join proveedor pr on pr.codproveedor=tp.codproveedor
INNER JOIN DOCUMENTO DO ON DO.CODDOCUMENTO=F.CODDOCUMENTO
where d.modalidad='0' AND D.PRECIO=3.670 AND D.FEMITIDA BETWEEN '12/01/2008' AND '18/01/2008'
AND p.codproducto IN ('K00001','K00002','K00003','K00004')
AND (D.ESTADO='0' OR D.ESTADO='1') and f.CODTIPO='Tip-02'and f.traspaso='0'
group by E.NOMEMPLEADO ORDER BY E.NOMEMPLEADO ASC
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

RE:dos consultas en uno

Publicado por Llaverin (6 intervenciones) el 24/01/2008 09:28:22
Hola el grinch:
Por lo que veo la estructura es la misma, lo unico que cambia es el porcentaje, no se si te valdrá lo que te voy a decir, pero prueba con esto:

En vez de hacer el porcentaje dentro del select, lo haces fuera, dentro del bucle:
select E.NOMEMPLEADO,SUM(d.importe) as TotalProc .............

variable o campo= (rs!TotalProc)*3.0)/100
variable o campo= (rs!TotalProc)*2.0)/100
variable o campo= (rs!TotalProc)*1.5)/100

No se si esto te resultará, pero es otra opción. Pruebalo y me comentas.

Saludos
Ana
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:dos consultas en uno

Publicado por el grinch (2 intervenciones) el 24/01/2008 16:03:35
hola Llaverin :

si te das cuenta no solo es el porcentaje si no tambien es el precio de venta

D.PRECIO>=3.833
D.PRECIO=3.750
D.PRECIO=3.670

y recuerda que esta formula es de contado falta el credito
f.CODTIPO='Tip-02' <---------------contado
f.CODTIPO='Tip-01' <---------------credito

donde lo puedo colocar, puedes mandar un ejemplo porfa

gracias
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:dos consultas en uno

Publicado por Llaverin (6 intervenciones) el 30/01/2008 09:27:19
Hola el grinch:
Creo que se podría hacer de esta manera, en el where le pones esta condición:

where d.modalidad='0' AND (D.PRECIO=3.833 Or D.PRECIO=3.750 Or D.PRECIO=3.670) AND D.FEMITIDA BETWEEN '12/01/2008' And
(f.CODTIPO='Tip-02' Or f.CODTIPO='Tip-01'

Y despues dentro del bucle puedes preguntar si el contado o credito, de esta manera:
If rs!CodTipo = "Tip-01" Then
Una cosa
ElseIf rs!CodTipo = "Tipo-o2" Then
Otra cos
End If

Espero que te sirva, si no te queda claro, dimelo.

Pruebalo y me comentas

Saludos
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