Foros del Web » Programación para mayores de 30 ;) » Programación General »

Consulta SQL muy específica

Estas en el tema de Consulta SQL muy específica en el foro de Programación General en Foros del Web. Tengo una tabla la cual tiene un catálogo de cuentas contables. Estoy haciendo la pantalla de entrar el balance inicial de as cuentas y en ...
  #1 (permalink)  
Antiguo 03/01/2004, 11:19
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Consulta SQL muy específica

Tengo una tabla la cual tiene un catálogo de cuentas contables. Estoy haciendo la pantalla de entrar el balance inicial de as cuentas y en la tabla tengo dos campos, uno de débito y otro de crédito.
Para introducir los balances, solo se coloca un campo, y el sistema es que decide si lo grabará en el lado de débito o en el de crédito.
Aquí viene la consulta:

Voy a desplegar los datos en un gris y quiero que si el número de cuenta empieza con 1 ó 5 me traiga el valor del campo del débito (que son los activos y gastos) y si empieza por cualquier otro número que me traiga el valor que haya en el campo crédito.

Como puedo hacer una consulta SQL que haga eso? Supongo que es con Select Case... Alguien sabe???
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 06/01/2004, 17:16
 
Fecha de Ingreso: enero-2004
Mensajes: 13
Antigüedad: 20 años, 3 meses
Puntos: 0
Puedes hacerlo con un IF.

IF C_TUCAMPODECUENTA LIKE '1%' OR C_TUCAMPODECUENTA LIKE '5%'

SELECT N_TUCAMPODEDEBITO as N_TUVALORDERETORNO
FROM TU_TABLA

ELSE

SELECT N_TUCAMPODECREDITO as N_TUVALORDERETORNO
FROM TU_TABLA

END

Si tu campo de cuenta fuese numérico, en lugar del LIKE debes dividirlo de forma entera por la unidad del mismo nivel, es decir, si una cuenta tiene 3 dígitos (no tengo ni idea, contabilidad no es lo mio), debes dividirlo por 100, si tiene 4 por 1000, etc.

Ej: cuenta 215.

215/100 = 2 (si lo haces como entero, si no 2.15)

Por lo tanto te quedaria algo como

IF N_TUCAMPODECUENTA / 100 (en el caso de tres digitos) = 1 OR N_TUCAMPODECUENTA / 100 = 5

etc.

Por último, si necesitas que la consulta te devuelva más cosas aparte del campo que pides y quieres ahorrarte de hacer dos consultas puedes declarar una variable y seleccionarla en tu consulta.

DECLARE miValorDeRetorno int (por ejemplo)

Luego dentro del IF y el ELSE haces :

SET miValorDeRetorno = TUCAMPODECREDITO (o el de debito, depende de si estas en el IF o en el else.

Al salir del IF ya puedes hacer tu consulta, por ejemplo :

SELECT C_MICAMPO1,C_MICAMPO2,C_MICAMPO3, miValorDeRetorno
FROM TU_TABLA
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:35.