Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-01-2009
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 22
brandolin Va por buen camino
Funcion ABS

Hola a todos, busque y no encontre nada

necesito una funcion similara a la ABS... es decir en una consulta necesito que una columna sea siempre positiva... hay valores que son negativos y necesito convertirlos.

La consulta es:

Código SQL [-]
select fecha, tipo_mov, sum(cantidad) from mov_stock

Gracias desde ya...
Responder Con Cita
  #2  
Antiguo 23-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
"Chevere", pero, ¿Que motor utilizas?, estoy seguro que esa información es muy valiosa para poderte ayudar.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 23-01-2009
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 22
brandolin Va por buen camino
haaa si me olvide de ese detalle...

Firebird 1.5...

por lo que estoy leyendo la funcion ABS se implemento en la version 2.1.. habra alguna otra forma de implementarla... ???
Responder Con Cita
  #4  
Antiguo 23-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por brandolin Ver Mensaje
por lo que estoy leyendo la funcion ABS se implemento en la version 2.1.. habra alguna otra forma de implementarla... ???
Como bien dices esa función esta implementada dentro del motor, desde la versión 2.1 de Firebird... para versiones anteriores como la tuya, puedes declarar en la base de datos la UDF que viene con esa distribución, asi:

Código SQL [-]
DECLARE EXTERNAL FUNCTION abs 
    DOUBLE PRECISION
    RETURNS DOUBLE PRECISION BY VALUE
    ENTRY_POINT 'IB_UDF_abs' MODULE_NAME 'ib_udf';

Debes tener en cuenta (Aunque generalmente es asi), que la DLL llamada ib_udf.dll debe estar en la carpeta UDF de Firebird.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #5  
Antiguo 23-01-2009
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 21
RolphyReyes Va por buen camino
Smile

Saludos.

Otra solución sería realizar la sentencia dentro de un Stored Procedure y quedaría así:

Código SQL [-]
CREATE OR ALTER PROCEDURE SP_IMPLEMENTA_ABS 
RETURNS (
    PONUMBER CHAR(8),
    CUSTNO INTEGER,
    TOTALVALUE DECIMAL(9,2))
AS
begin
  /* Procedure Text */
  FOR SELECT PO_NUMBER, CUST_NO, TOTAL_VALUE
  FROM SALES
  INTO
   :PONUMBER,
   :CUSTNO,
   :TOTALVALUE
  DO
  BEGIN
    if (:TOTALVALUE < 0) then
     TOTALVALUE = :TOTALVALUE * -1;
    suspend;
  END
end;

Y luego harías:
Código SQL [-]
SELECT PONUMBER, CUSTNO, SUM(TOTALVALUE)
FROM SP_IMPLEMENTA_ABS

Hasta luego.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #6  
Antiguo 24-01-2009
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 18
hecospina Va por buen camino
Hola
Yo trabajo la version 2.0 pero creo (aunque no estoy seguro) que la version 1.5 tenia ya implemantedo el IIf y se podria hacer desde el mismo sql

Código SQL [-]
select fecha, tipo_mov, iif(sum(cantidad)>0,sum(cantidad),-sum(cantidad)) as cantidad from mov_stock
group by fecha, tipo_mov
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
Función o q? Veanny Internet 2 21-02-2008 22:43:40
Funcion fafita Varios 7 25-01-2008 17:03:40
Funcíon % de CPU jorgegetafe Varios 0 03-11-2007 18:17:54
Función Last Triton Firebird e Interbase 2 25-05-2005 18:46:50
funcion agora18 SQL 1 06-10-2003 08:18:30


La franja horaria es GMT +2. Ahora son las 02:37:30.


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