Oracle - select dentro de Case

 
Vista:

select dentro de Case

Publicado por Cristi_me (1 intervención) el 29/05/2019 20:33:40
Buenas tardes, quisiera exponerles mi caso esperando puedan ayudarme.

estoy trabajando con facturas pagadas a proveedores, F para fisicos, M para morales, los cuales aplica de manera diferente, por lo que tengo dos consultas distintas para los tipos de proveedores y necesito que cuando sea F aplique una y cuando sea M aplique la que le corresponda, utilice el decode, pero no pude lograr que me funcionara, ahora intente con el CASE pero me marca el error ORA-00913: too many values.

podrian aconsejarme una opcion correcta o que estoy haciendo mal, ya busque opciones que me acepten las sentencia select con las operaciones que me permiten determinar el monto pagado al proveedor pero hasta el momento no lo he logrado.

muchas gracias de antemano.

1
2
3
4
5
6
7
8
9
(select pv.persona,
 CASE
  WHEN pv.persona = 'F'
  THEN (select sum(ROUND(((dt.montofact * df.iva/100)+ dt.montofact)-((dt.montofact/100)* df.retenido1)-((dt.montofact) * (df.retenido/100)),2))from detfacturas df where df.factura = vf.factura)
  WHEN pv.persona = 'M'
  THEN  (select sum(ROUND(((dt.montofact * df.iva/100)+ dt.montofact),2))from detfacturas df where df.factura = vf.factura)
  ELSE  'No es Proveedor'
  END
  from proveedores pv where pv.proveedor = vf.proveedor) as monto_pagado
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
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

select dentro de Case

Publicado por Rafael (328 intervenciones) el 30/05/2019 08:16:59
Hola

Con el codigo que pones NO es posible ayudarte

1. No sabemos de donde viene el ALIAS "vf" y lo usas para igualar factura con detfacturas y proveedor con proveedores.
1. No sabemos de donde viene el ALIAS "dt" que useas como montofact.

He de suponer que esto tiene que ver con OTRA consulta de la que solo muestras una parte...

Ayudate para que te podamos ayudar.

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
Imágen de perfil de roberto
Val: 12
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

select dentro de Case

Publicado por roberto (5 intervenciones) el 14/06/2019 21:49:25
tb, se ve un error , el resultado del CASE tienen que ser del mismo tipo de dato y en el Else tiras un varchar 'No es Proveedor' y lo otro revisa los 2 select que devuelvan un solo dato.

select sum(ROUND(((dt.montofact * df.iva/100)+ dt.montofact)-((dt.montofact/100)* df.retenido1)-((dt.montofact) * (df.retenido/100)),2))
from detfacturas df where df.factura = vf.factura

select sum(ROUND(((dt.montofact * df.iva/100)+ dt.montofact),2))from detfacturas df where df.factura = vf.factura


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