Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2010
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Colocar un Campo Negativo?

Buenas, Este es Un codigo donde presenta algunos calculos de una tabla, lo que nesesito es que cuando el campo DOCTYPE da como resultado DISTINTO A 1 que me presente los valores Negativos en los dos ultimos campos y si el resultado es 1 que me presente los Valores Positivo en los dos Últimos Campo oh que me presente los resultado tal como esta definido el campo Total debe de Cambiar de acuerdo al campo de DOCTYPE.
Código SQL [-]
SELECT DISTINCT 
         VENDORID AS Vendedor_ID,
         DOCTYPE AS Tipo_Doc,
         SUM(CURTRXAM) AS Total,
         SUM(CASE WHEN DATEDIFF(DAY, DOCDATE, GETDATE()) <= 30 THEN CURTRXAM ELSE '0.00' end) AS Periodo_Actual,
         SUM(CASE WHEN DATEDIFF(DAY, GETDATE()) > 30 THEN CURTRXAM ELSE '0.00' end) AS De_30_a_Superior
        FROM PM20000 
         GROUP BY VENDORID, DOCTYPE

El Campo CURTRXAM esta almacenado como Positivo. Gracias Por Su Ayuda.

Última edición por DasGrun fecha: 26-01-2010 a las 17:19:10.
Responder Con Cita
  #2  
Antiguo 26-01-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.586
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No comentas que SGBD estás utilizando. La mayoría de los "buenos" poseen la clausula IF que puedes utilizar dentro de la consulta. Revisa la ayuda, si puedes usarlo se trata de colocar dos IF donde muestas los dos últimos campos utilizando como condición el campo DOCTYPE.

La sintaxis puede variar un poco segun el SGBD, pero todos son similares.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 26-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.954
Poder: 27
delphi.com.ar Va camino a la fama
Por la sintaxis deduzco que se trata de SqlServer. Puedes utilizar un CASE WHEN al igual que lo utilizas en los restantes campos:

Código SQL [-]
(CASE WHEN DOCTYPE <> 1 THEN ABS(CAMPO)* -1 ELSE ABS(CAMPO) END)

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 26-01-2010
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
SGDB es SqlServer??
Responder Con Cita
  #5  
Antiguo 26-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.954
Poder: 27
delphi.com.ar Va camino a la fama
SGDB = "Sistema de Gestion de Bases de Datos"

SQL Server es uno de ellos, la pregunta de Neftali cuál de ellos utilizas. Por la sintaxis que presentaste, aparentemente es SqlServer, desconozco si otro motor utiliza la sintaxis: CASE WHEN
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 26-01-2010
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Si es Microsoft SQL Server 2005
Responder Con Cita
  #7  
Antiguo 26-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.954
Poder: 27
delphi.com.ar Va camino a la fama
Ok!.. no te sirvió mi primer respuesta?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 26-01-2010
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
no Me Suma todos los campos que se nesesita,

SUM(CASE WHEN DOCTYPE <> 1 THEN ABS(CAMPO)* -1 ELSE ABS(CAMPO) END) as Campo_Negativo
Responder Con Cita
  #9  
Antiguo 27-01-2010
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.954
Poder: 27
delphi.com.ar Va camino a la fama
Entonces no entendí la pregunta... ¿porqué no nos la extiendes un poco mas?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 27-01-2010
DasGrun DasGrun is offline
Miembro
 
Registrado: abr 2008
Posts: 109
Poder: 17
DasGrun Va por buen camino
Solucion

Buenas Ante que todo Gracias a todos por su Ayuda a continuacion le Presento mi Solucion, hay algunos que no entendieron mi Pregunta. de la cual le pido mil disculpa

Código SQL [-]
SELECT DISTINCT 
  a.VENDORID AS Id_Proveedor,
  b.VENDNAME AS Proveedor,
  SUM(CASE WHEN DATEDIFF(DAY,a.DOCDATE,GETDATE()) <= 30 THEN (CASE WHEN a.DOCTYPE <> 1 THEN a.CURTRXAM * -1 ELSE a.CURTRXAM END)  ELSE '0.00' END) AS Periodo_Actual,
FROM
  a.PM00200
  INNER JOIN a.PM20000 ON (b.PM00200.VENDORID = a.VENDORID)
GROUP BY
  a.VENDORID,
  b.VENDNAME

Saludos
Responder Con Cita
Respuesta



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
Colocar Ancho De columna de un DBGrid dependiendo del ancho del maximo campo guardado gulder Varios 3 08-11-2008 13:27:34
Saber Número negativo y pasarlo a positivo BuRtOn Varios 3 19-09-2008 21:36:15
colocar un pdf en un qreport anubis Impresión 1 04-08-2007 19:48:26
colocar icono a un .jar gulder JAVA 1 30-08-2006 19:14:42
Colocar units en DLL adebonis Varios 1 27-03-2004 14:02:30


La franja horaria es GMT +2. Ahora son las 20:06:42.


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