SQL Server - Ayuda para un select

   
Vista:

Ayuda para un select

Publicado por Daniel (8 intervenciones) el 18/12/2017 15:27:39
Hola al foro, hago una consulta, espero se entienda.

(TipoOperac < 100 son facturas, > 100 son pagos)

Cliente TipoOperac NroComprob Importe NroPago
15 02 345 120 0
15 05 345 100 0
15 10 345 500 0
Total de Factura 345 $ 720

Cliente TipoOperac NroComprob Importe NroPago
15 101 345 -500 12
15 102 345 -220 12
Total del pago $ 720

El objetivo es descomponer el TOTAL DEL PAGO y mostrar agrupado por TipoOperac que se usaron al confeccionar la factura. Lo tengo resuelto de esta manera cuando viene UN SOLO registro.

SELECT 'TOTALES POR TIPO DE OPERACION' AS NOMBRE, MOVIMIENTOS_1.TipoOperac,
CASE WHEN (MOVIMIENTOS_1.TipoOperac < 100) THEN SUM(MOVIMIENTOS_1.Importe) ELSE 0 END AS INGRESOS,
CASE WHEN (MOVIMIENTOS_1.TipoOperac > 100) THEN SUM(MOVIMIENTOS_1.Importe) ELSE 0 END AS EGRESOS
FROM MOVIMIENTOS INNER JOIN
MOVIMIENTOS AS MOVIMIENTOS_1 ON MOVIMIENTOS.Cliente = MOVIMIENTOS_1.Cliente AND
MOVIMIENTOS.NroComprob = MOVIMIENTOS_1.NroComprob
GROUP BY MOVIMIENTOS_1.TipoOperac

El tema es cuando de ese pago vienen dos registros (efectivo y tarjeta) me duplica los valores, supongo que primero tengo que agrupar el pago (sin importar la forma de pago) para que me quede un solo registro, luego si ir a ver la factura, alguna ayuda? 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
Imágen de perfil de Isaias

Ayuda para un select

Publicado por Isaias (3751 intervenciones) el 18/12/2017 18:52:47
¿Su motor de base de datos es SQL Server?, ¿Que version y edicion?
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

Ayuda para un select

Publicado por Daniel (8 intervenciones) el 19/12/2017 13:17:02
Hola Isaias, es SQL Server 2005
Microsoft SQL Server Management Studio Express 9.00.2047.00
Microsoft Data Access Components (MDAC) 2000.085.1132.00 (xpsp.080413-0852)
Microsoft MSXML 2.6 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 8.0.6001.18702
Microsoft .NET Framework 2.0.50727.3053
Sistema operativo 5.1.2600
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

Ayuda para un select

Publicado por Rafael (102 intervenciones) el 19/12/2017 16:27:40
Yo creo que mas bien lo que esta erroneo es como estas planteando el SUM
a ver si es esto lo que buscas... por que tu redaccion no deja claro que quieres hacer...

1
2
3
4
5
6
7
SELECT Cliente
     , NroComprob
     , SUM(CASE WHEN TipoOperac < 100 THEN Importe ELSE 0 END) AS INGRESOS
     , SUM(CASE WHEN TipoOperac < 100 THEN Importe ELSE 0 END) AS EGRESOS
FROM   MOVIMIENTOS
GROUP  BY Cliente
     , NroComprob
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

Ayuda para un select

Publicado por Daniel (8 intervenciones) el 19/12/2017 18:45:36
No. Tengo que descomponer el pago de acuerdo a la factura que se paga. Gracias igual por contestar. En todo caso leer el primer post.
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

Ayuda para un select

Publicado por Rafael (102 intervenciones) el 20/12/2017 10:47:49
Lei el primer post y como te digo NO deja claro lo que quieres hacer ...

El objetivo es descomponer el TOTAL DEL PAGO y mostrar agrupado por TipoOperac que se usaron al confeccionar la factura. Lo tengo resuelto de esta manera cuando viene UN SOLO registro.

El tema es cuando de ese pago vienen dos registros (efectivo y tarjeta) me duplica los valores, supongo que primero tengo que agrupar el pago (sin importar la forma de pago) para que me quede un solo registro, luego si ir a ver la factura, alguna ayuda? Muchas gracias.

Si pusieras un ejemplo de como esperas la salida ...

Saludos y Suerte
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

Ayuda para un select

Publicado por Daniel (8 intervenciones) el 20/12/2017 13:02:29
Si Rafael, gracias por preocuparte, acá va un ejemplo.
Todos los movimientos se almacenan en una sola tabla MOVIMIENTOS.
Suponete que se hizo una factura con 3 items (individualizado por TipoOperac e Importe) por un total de $ 720.
Luego se hace un pago, (los pagos SIEMPRE son por el total), una parte en efectivo ($ 500) y otra parte en Cheque ($ 220) cada forma de pago viene en distinto registro.

Cliente TipoOperac NroComprob Importe NroPago
15 02 345 130 0
15 05 345 100 0
15 10 345 490 0
Total de Factura 345 $ 720

Cliente TipoOperac NroComprob Importe NroPago
15 101 345 -500 12
15 102 345 -220 12
Total del pago $ 720

Yo leyendo los pagos quiero mostrar los totales de acuerdo a como se hizo la factura.
De esta manera

TipoOperac Importe
02 130
05 100
10 490

No se si fui claro, muchas gracias por contestar.
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 Isaias

Ayuda para un select

Publicado por Isaias (3751 intervenciones) el 20/12/2017 16:43:07
Hola, yo leo y leo y leo, pero no comprendo, veamos, una duda

¿Te pueden pagar DOS cheques uno por 100 y otro por 120?
¿Te pueden hacer CINCO pagos en EFECTIVO cada uno por 100?
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

Ayuda para un select

Publicado por Daniel (8 intervenciones) el 20/12/2017 22:47:34
Si Elias. Ponele que me pagan con un cheque de 400 y el resto en efectivo.
supongo que primero tengo que hacer un SUM de los importespor cada pago y despues ir a fijarme el detalle de la factura para mostrar lositems que se pagaron.
cuando el pago es todo efectivo o todo cheque lo tengo resuelto. 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
Imágen de perfil de Javier

Ayuda para un select

Publicado por Javier (14 intervenciones) el 21/12/2017 00:05:46
Tal vez mi conocimiento es limitado pero no me queda clara esa consulta, creo que lo mas sano seria que tuvieras los datos de facturas en un tabla, los datos de pagos o aplicaciones en otra tabla y relacionarla por folio de factura, tampoco me quedan claro esos tipos de operaciones que mencionas al generar una factura, por que ese "02,05,10", no se si sean los conceptos que lleva la factura, no entiendo si tu generas la factura o la recibes, ya que hablas de INGRESOS y EGRESOS, que un mismo folio de factura no puede generar, en otras palabras o haces una factura para recibir un PAGO por algún bien o servicio que "realizaste" o bien recibes una factura para realizar un PAGO por un bien o servicio "recibido", nunca un mismo folio te sirve para los dos casos.

Ahora, si mal no entiendo a lo que quieres hacer , tal vez esto te podría servir.

1
2
3
4
5
SELECT folio, tipomovto, SUM(importe) as total
FROM tutabla
WHERE folio IN
    (SELECT DISTINCT folio FROM tutabla WHERE tipmovto > 100)
GROUP BY folio, tipomovto

Espero te sirva la idea o bien nos aclares los puntos que te comento y por favor no pongas que lea tu primero post, no todos vemos el mundo desde tus ojos.
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 Isaias

Ayuda para un select

Publicado por Isaias (3751 intervenciones) el 21/12/2017 21:59:35
Este ejemplo que pones como resolver el problema, no es muy claro

¿De donde sacas que el TipoOperac = 02 suma 130?
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
Revisar política de publicidad