Oracle - Como hacer la siguiente consulta?? es muy urgente.

 
Vista:

Como hacer la siguiente consulta?? es muy urgente.

Publicado por Leonardo Prada (27 intervenciones) el 22/08/2002 19:34:03
Hola hola,

Espero que se encuentren muy bien amigitos, me gustaria saber si me
pueden ayudar con lo siguiente:

con este query:

select nvl(dcie_unse,'OTROS') SERVICIO,0 VENTAS, sum(dcie_val) PAGOS
from siacc_tdcierr
where dcie_timo = 'PAGO'
and dcie_period between 200201 and 200204
group by dcie_unse
union
select nvl(dcie_unse,'OTROS') SERVICIO,sum(dcie_val) VENTAS, 0 PAGOS
from siacc_tdcierr
where dcie_timo = 'VENT'
and dcie_period between 200201 and 200204
group by dcie_unse
order by SERVICIO desc;

obtengo el siguiente resultado:
SERVI VENTAS PAGOS
----- ---------- ----------
TUSO 0 770215
TUSO 3920000 0
SALU 0 1500
SALU 2000000 100000
OTROS 0 80000
OTROS 100000 0

La pregunta es:
Como hacer para ver las VENTAS y sus PAGOS en una misma fila por cada SERVICIO
ejemplo:

SERVI VENTAS PAGOS
----- ---------- ----------
TUSO 3920000 770215
SALU 200000 1500
OTROS 10000 80000

En verdad muchas gracias.
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:Como hacer la siguiente consulta?? es muy urgen

Publicado por José Luis (34 intervenciones) el 22/08/2002 19:57:28
SELECT P.SERVICIO
,V.VENTAS
,P.PAGOS
FROM (select nvl(dcie_unse,'OTROS') SERVICIO
,sum(dcie_val) PAGOS
from siacc_tdcierr
where dcie_timo = 'PAGO'
and dcie_period between 200201 and 200204
group
by dcie_unse ) P,
,(select nvl(dcie_unse,'OTROS') SERVICIO
,sum(dcie_val) VENTAS
from siacc_tdcierr
where dcie_timo = 'VENT'
and dcie_period between 200201 and 200204
group
by dcie_unse ) V
WHERE P.SERVICIO = V.SERVICIO
ORDER
BY SERVICIO DESC;
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

Gracias Jose luis, mira esta otra duda si pued? .

Publicado por Leonardo Prada (27 intervenciones) el 22/08/2002 22:29:19
Gracias Jose en verdad me funciono muy bien y aprendi mucho con tu ejemplo fue sensacional.

Pero ahora te doy el ejemplo real que necesito y es el siguiente:

con esteselect muestra lo siguiente realmente: (igual al anterior pero cambia el resultado por lo datos de la tabla)
select nvl(dcie_unse,'OTROS') SERVICIO,0 VENTAS, sum(dcie_val) PAGOS
from siacc_tdcierr
where dcie_timo = 'PAGO'
and dcie_period between 200201 and 200204
group by dcie_unse
union
select nvl(dcie_unse,'OTROS') SERVICIO,sum(dcie_val) VENTAS, 0 PAGOS
from siacc_tdcierr
where dcie_timo = 'VENT'
and dcie_period between 200201 and 200204
group by dcie_unse
order by SERVICIO desc;

SERVI VENTAS PAGOS
----- ---------- ----------
TUSO 0 770215
TUSO 3920000 0
SALU 0 1500
OTROS 0 80000
CAPA 200000 0

Lo ideal es sacar :

SERVI VENTAS PAGOS
----- ---------- ----------
TUSO 3920000 770215
SALU 0 1500
OTROS 0 80000
CAPA 200000 0

Gracias nuevamente.
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:Gracias Jose luis, mira esta otra duda si pued?

Publicado por José Luis (34 intervenciones) el 23/08/2002 00:17:03
SELECT T.SERVICIO
,V.VENTAS
,P.PAGOS
FROM (select nvl(dcie_unse,'OTROS') SERVICIO
,sum(dcie_val) PAGOS
from siacc_tdcierr
where dcie_timo = 'PAGO'
and dcie_period between 200201 and 200204
group
by dcie_unse ) P
,(select nvl(dcie_unse,'OTROS') SERVICIO
,sum(dcie_val) VENTAS
from siacc_tdcierr
where dcie_timo = 'VENT'
and dcie_period between 200201 and 200204
group
by dcie_unse ) V
,(select distinct nvl(dcie_unse,'OTROS') SERVICIO
from siacc_tdcierr
where dcie_period between 200201 and 200204) T
WHERE T.SERVICIO = P.SERVICIO(+)
AND T.SERVICIO = V.SERVICIO(+)
ORDER
BY SERVICIO DESC;

Salu2 a to2 from Villahermosa, Tabasco, México.
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

Espero no te molestes, la última pregunta??

Publicado por Leonardo Prada (27 intervenciones) el 23/08/2002 02:13:48
Hay si como dicen los mexicanos, Gracias mano.

Bueno la verda lo habia sacado pero con unos unions y la verdad no estaba convencido, gracias por s
tu colaboración pues me descrestaste.
Pues espero no te aburras ya que creo que es la última pregunta:

este es nuestro resultado de tu último select

SERVI VENTAS PAGOS
----- ---------- ----------
TUSO 3920000 770215
SALU 0 1500
OTROS 0 80000
CAPA 200000 0

Es posible en la misma sentencia sacar lo siguiente:
Dos columnas %ventas y %pagos, serian los promedio de ventas y los pagos recibidos
por servicio

SERVI VENTAS %VENTAS PAGOS %PAGOS
----- ---------- ----------
TUSO 3920000 770215
SALU 0 1500
OTROS 0 80000
CAPA 200000 0

Leonardo Prada
Bucaramanga.Colombia
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:Espero no te molestes, la última pregunta??

Publicado por José Luis (34 intervenciones) el 23/08/2002 16:12:22
en el select puedes hacer todas las operaciones que quieras por ejemplo:

Select alimentos, (alimentos/(alimentos+bebidas+cigarros))*100 porcentaje_alimentos, bebidas, (bebidas/(alimentos+bebidas+cigarros))*100 porcentaje_bebidas, cigarros, (cigarros/(alimentos+bebidas+cigarros))*100 porcentaje_cigarros from cuentas_comanda

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