Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2010
DasGrun DasGrun is offline
Miembro
NULL
 
Registrado: abr 2008
Posts: 109
Poder: 12
DasGrun Va por buen camino
Question Analisis de Query SQL SERVER

Buenas, Necesito que me ayuden con el siguiente analisis.

Este es un query; cuando el campo DOCTYPE es diferente a 6 y 5 entonces el campo CURTRXAM es positivo de lo contrario es Negativo multiplicandolo por -1, pero quiero agrupar y sumarlos por cada vendedor y presentarlo en general.
Código SQL [-]
SELECT 
           dbo.PM20000.VENDORID,
           dbo.PM00200.VENDNAME,
           dbo.PM20000.DOCTYPE,
           SALDO = CASE WHEN (dbo.PM20000.DOCTYPE <> 6 AND     dbo.PM20000.DOCTYPE <> 5) THEN SUM(dbo.PM20000.CURTRXAM) ELSE SUM(dbo.PM20000.CURTRXAM) * -1  END
FROM
  dbo.PM20000
INNER JOIN dbo.PM00200 ON (dbo.PM20000.VENDORID = dbo.PM00200.VENDORID)
group by
dbo.PM20000.VENDORID,
dbo.PM00200.VENDNAME,
dbo.PM20000.DOCTYPE

el resultado que me presenta es el siguiente:
Código SQL [-]
VENDORID          VENDNAME                                   DOCTYPE      SALDO
05019995129812   A.M. IMPRESORES S. DE R. L.          1              1232
05019995129812   A.M. IMPRESORES S. DE R. L.          6             -1232
521181-6         AEROMOTORES                             5             -2093034
9EP1PU-L         AGENCIA ADUANERA                      5             -668494.4
9EP1PU-L         AGENCIA ADUANERA                      6             -27769.36
MYY6JK-U         ALFREDO RAMOS FUENTES              2              2395.66
MYY6JK-U         ALFREDO RAMOS FUENTES              3              40129.47
650510653        ARMSTRONG EQUIPMENT                3              890470.5
650510653        ARMSTRONG EQUIPMENT                6             -1902740

lo que necesito es que me presente es lo siguiente:
Código SQL [-]
VENDORID          VENDNAME                                       SALDO
05019995129812   A.M. IMPRESORES S. DE R. L.              0
521181-6         AEROMOTORES                                 -2093034
9EP1PU-L         AGENCIA ADUANERA                          -696263.76
MYY6JK-U         ALFREDO RAMOS FUENTES                 42525.13
650510653        ARMSTRONG EQUIPMENT                    -1012269.5
Gracias por Su Ayuda
__________________
Hasta Mis Huesos son Codificados?

Última edición por DasGrun fecha: 08-04-2010 a las 18:31:34. Razón: Mala Presentacion
Responder Con Cita
  #2  
Antiguo 08-04-2010
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
NULL
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 14
jcarteagaf Va por buen camino
Para obtener el resultado que esperas debes quitar la columna
dbo.PM20000.DOCTYPE del Select y de la clausula GROUP BY

Saludos
Responder Con Cita
  #3  
Antiguo 08-04-2010
DasGrun DasGrun is offline
Miembro
NULL
 
Registrado: abr 2008
Posts: 109
Poder: 12
DasGrun Va por buen camino
Gracias por tu ayuda, pero aun quitandolo no me presenta el resultado deseado.

este es un query que se parece al objetivo.

Código SQL [-]
SELECT DISTINCT 
  dbo.PM20000.VENDORID,
  dbo.PM00200.VENDNAME,
  SALDO = (CASE WHEN(dbo.PM20000.DOCTYPE <> 6 AND dbo.PM20000.DOCTYPE <> 5) THEN SUM(dbo.PM20000.CURTRXAM) ELSE '0.00' END) AS FIELD_1,
  SALDO1 = (CASE WHEN(dbo.PM20000.DOCTYPE = 6 AND dbo.PM20000.DOCTYPE = 5) THEN '0.00' ELSE SUM(dbo.PM20000.CURTRXAM) *-1 END) AS FIELD_2
FROM
  dbo.PM20000
  INNER JOIN dbo.PM00200 ON (dbo.PM20000.VENDORID = dbo.PM00200.VENDORID)
GROUP BY
  dbo.PM20000.VENDORID,
  dbo.PM00200.VENDNAME,
  dbo.PM20000.DOCTYPE

Analicenlo y me dice cual es el resultado.
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
  #4  
Antiguo 09-04-2010
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
NULL
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 14
jcarteagaf Va por buen camino
Prueba cambiando tu query de esta forma

Código SQL [-]
SELECT DISTINCT 
  dbo.PM20000.VENDORID,
  dbo.PM00200.VENDNAME,
  SALDO = SUM( CASE WHEN(dbo.PM20000.DOCTYPE <> 6 AND dbo.PM20000.DOCTYPE <> 5) THEN dbo.PM20000.CURTRXAM ELSE 0 END) AS FIELD_1,
  SALDO1 = SUM(CASE WHEN(dbo.PM20000.DOCTYPE = 6 AND dbo.PM20000.DOCTYPE = 5) THEN 0 ELSE SUM(dbo.PM20000.CURTRXAM) *-1 END) AS FIELD_2
FROM
  dbo.PM20000
  INNER JOIN dbo.PM00200 ON (dbo.PM20000.VENDORID = dbo.PM00200.VENDORID)
GROUP BY
  dbo.PM20000.VENDORID,
  dbo.PM00200.VENDNAME,
  dbo.PM20000.DOCTYPE
Responder Con Cita
  #5  
Antiguo 09-04-2010
DasGrun DasGrun is offline
Miembro
NULL
 
Registrado: abr 2008
Posts: 109
Poder: 12
DasGrun Va por buen camino
El Resultado es lo mismo agregandole el SUM, A continuacion te Presento un Query y el resultado para que lo mires mas detalladamente.

Código SQL [-]
SELECT DISTINCT
dbo.PM20000.VENDORID,
CUENTAS_PAGAR = CASE WHEN (dbo.PM20000.DOCTYPE <> 6 AND  dbo.PM20000.DOCTYPE <> 5) THEN SUM(dbo.PM20000.DOCAMNT) ELSE '0.00' END,
PAGOS = CASE WHEN (dbo.PM20000.DOCTYPE = 6 OR dbo.PM20000.DOCTYPE = 5) THEN SUM(dbo.PM20000.DOCAMNT) * -1 ELSE '0.00' END
FROM
  dbo.PM20000
GROUP BY 
  dbo.PM20000.VENDORID,
  dbo.PM20000.DOCTYPE

El resultado es el Siguiente.

Código:
VENDORID        CUENTAS_PAGAR          PAGOS
00001                        1000                         0 
00001                        0                              -1000
00002                        2000                         0  
00002                        0                              -1000  
00003                        500                           0  
00003                        0                              -4000
Para el VENDORID 00001 su saldo es 0 porque el total de la suma de CUENTAS_PAGAR es igual a total de suma de PAGOS, el VENDORID 00002 Su saldo es 1000 porque 2000 +(-1000) = 1000; el saldo del VENDORID 00003 es -3500 porque 500 + (-4000) = -3500

Lo que necesito es crear un campo que me sume estas columna siempre y cuando es el Mismo VENDORID.

Gracias Nuevamente.
__________________
Hasta Mis Huesos son Codificados?
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Lost connection to MySql server during query Bertifox2008 Conexión con bases de datos 6 12-03-2014 21:20:36
Analisis de un sistema Puberta Varios 40 15-12-2007 03:54:15
ejecutar un query accesando tablas de Oracle desde SQL Server SQL Server MS SQL Server 1 02-03-2007 23:44:18
Analisis de sistemas Garnet Varios 3 23-10-2005 04:02:49
Análisis Químico Nuria Humor 5 04-05-2004 17:15:52


La franja horaria es GMT +2. Ahora son las 21:45:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi