PDA

Ver la Versión Completa : Restar Campo Generados de SQL


kurono
19-06-2013, 05:24:21
hola amigos como estan necesito restar el resultado de varias sentencia de sql pero no encuento la forma de hacerlo

SELECT COUNT(TIPOTRANSACION)AS P FROM TRANSACIONES WHERE TIPOTRANSACION ='P'
SELECT COUNT(TIPOTRANSACION)AS D FROM TRANSACIONES WHERE TIPOTRANSACION ='D'
SELECT COUNT(TIPOTRANSACION)AS R FROM TRANSACIONES WHERE TIPOTRANSACION ='R'

lo que necesito es restar los campos P, D ,R

systemix
19-06-2013, 06:49:33
Hola Korono, que tal!

Bueno a la verdad no entiendo bien tu requerimiento :confused:. Puedo comprender sí, que tu tienes en tu tabla transacciones, en el campo TIPOTRANSACION varios valores. Ya nos expusiste algunos: P, D, R. ¿Tu tabla tiene más tipos de transacción?

Supongamos que sí, y tengas en tu tabla transacciones los tipos de transaccion restantes x, y, z. Podrías hacer la siguiente consulta y te daría un resultado similar. Y hasta lo veo mas sencillo:


Select Count(TIPOTRANSACCION) from TRANSACCIONES
where
TIPOTRANSACCION='x' and
TIPOTRANSACCION='y' and
TIPOTRANSACCION='z'


con una consulta así, puedes obtener lo que querías anteriormente. Ya que estás obviando a contar los tipos P, D y R.

Si no es de esta forma, no veo lo factible de tu consulta, ya que si todos los registros tienen al menos 1 de los tipos de transacción que me dijiste, el resultado te va a dar cero.

Por ejemplo, supongamos que lograste contar todos los registros de tu tabla que necesariamente tienen alguno de los 3 tipos de transaccion:

Nro de Registros: 30.
Nro por TipoTransaccion = P : 15
Nro por TipoTransaccion = D : 10
Nro por TipoTransaccion = R : 5

Restamos P-D-R = 15-10-5 = 0.

Espero haberte ayudado y entendido :D

kurono
19-06-2013, 08:19:32
probare el codigo luego te cuento

oscarac
19-06-2013, 08:54:24
Hola Korono, que tal!

Bueno a la verdad no entiendo bien tu requerimiento :confused:. Puedo comprender sí, que tu tienes en tu tabla transacciones, en el campo TIPOTRANSACION varios valores. Ya nos expusiste algunos: P, D, R. ¿Tu tabla tiene más tipos de transacción?

Supongamos que sí, y tengas en tu tabla transacciones los tipos de transaccion restantes x, y, z. Podrías hacer la siguiente consulta y te daría un resultado similar. Y hasta lo veo mas sencillo:


Select Count(TIPOTRANSACCION) from TRANSACCIONES
where
TIPOTRANSACCION='x' and
TIPOTRANSACCION='y' and
TIPOTRANSACCION='z'


con una consulta así, puedes obtener lo que querías anteriormente. Ya que estás obviando a contar los tipos P, D y R.

Si no es de esta forma, no veo lo factible de tu consulta, ya que si todos los registros tienen al menos 1 de los tipos de transacción que me dijiste, el resultado te va a dar cero.

Por ejemplo, supongamos que lograste contar todos los registros de tu tabla que necesariamente tienen alguno de los 3 tipos de transaccion:

Nro de Registros: 30.
Nro por TipoTransaccion = P : 15
Nro por TipoTransaccion = D : 10
Nro por TipoTransaccion = R : 5

Restamos P-D-R = 15-10-5 = 0.

Espero haberte ayudado y entendido :D


pero esto solo sirve si conoces de antemano los tipos de transacciones y si fueran variables?
estoy revisando una forma, apenas la prueba te aviso

kurono
19-06-2013, 15:56:59
amigo systemix la sentencia me devuelve 0 en todo caso supongamos que tengo 5 registro y le resto 2 deberia quedar 3 pero en cambio me regresa 0

kurono
19-06-2013, 16:26:20
se me olvido decir que los campos son de tipo texto no numerico

oscarac
19-06-2013, 17:29:28
amigo systemix la sentencia me devuelve 0 en todo caso supongamos que tengo 5 registro y le resto 2 deberia quedar 3 pero en cambio me regresa 0


Coloca la estructura de ese archivo y que datos contiene ese campo TipoTransaccion

systemix
19-06-2013, 21:12:13
se me olvido decir que los campos son de tipo texto no numerico

Disculpa que no me haya explicado bien. Cuando hablo de "Nro por TipoTransaccion" me refiero al resultado que te da el count. Yo sé que son de tipo String porque lo estás declarando así en la condición WHERE.

systemix
19-06-2013, 21:15:23
Coloca la estructura de ese archivo y que datos contiene ese campo TipoTransaccion

Por eso digo amigo oscarac. Kurono debes explicarnos mejor qué consulta necesitas hacer. Quizás se haga de otra forma :D

kurono
20-06-2013, 06:09:05
el campo TipoTransacion es de tipo nvarchar y como dije antes solo quiero restar los resultado de los count o por lo menos saber restar los campo generado por los count

oscarac
20-06-2013, 06:28:07
el campo TipoTransacion es de tipo nvarchar y como dije antes solo quiero restar los resultado de los count o por lo menos saber restar los campo generado por los count

creo q no nos has entendido
queremos saber q tipos de Transaccion se graban en ese campo
pq si solo se graban los 3 q tienes, entonces el resultado siempre sera cero

kurono
20-06-2013, 06:42:00
si exacto siempres son los tres

oscarac
20-06-2013, 06:43:30
amigo systemix la sentencia me devuelve 0 en todo caso supongamos que tengo 5 registro y le resto 2 deberia quedar 3 pero en cambio me regresa 0

entonces no coincide con lo q dices aqui

pon un ejemplo

TipoTransaccion
P
P
P
D
D
R
R


q quieres restar?

kurono
20-06-2013, 21:46:11
lo que quiero restar es la cantidad de registro existente en una tabla no el valor de un campo no se si me explico ahora

fjcg02
21-06-2013, 09:11:56
Prueba esto a ver qué te parece.

Imagino que no te costará entenderlo.
si el campo TipoTransaccion es = A sumas 1, si no , sumas -1


select sum( case when TipoTransaccion ='A' then 1 else when TipoTransaccion ='B' OR TipoTransaccion ='C' then -1 else 0 end ) as TOTAL
form TRANSACIONES
where TipoTransaccion IN ('A','B','C')

Nos comentas el resultado, por favor.

Un saludo

kurono
23-06-2013, 09:35:10
probare el codigo luego te cuento