Pregunta sobre un QUERY

30/01/2006 - 19:23 por Ramon | Informe spam
Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.

Preguntas similare

Leer las respuestas

#1 Isaias
30/01/2006 - 20:36 | Informe spam
Debes enviar a tu FUNCION (tal vez un boleano), la indicación de lo que
quires que te regrese y manejar esta condicion en la propia funcion.

dbo.CalculaBalance(codcli,@FECHA, 1)

o

dbo.CalculaBalance(codcli,@FECHA, 0)


Saludos
IIslas


"Ramon" escribió:

Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.




Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/01/2006 - 21:11 | Informe spam
Ramon,

Como calculas el balance?

En este caso debes usar la funcion nuevamente en la clausula "where" o
puedes usar la sentencia como una tabla derivada.

select *
from (
select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as balcli
from clientes
where statcli=1
) as a
where balcli > 0
go


AMB

"Ramon" wrote:

Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.




Respuesta Responder a este mensaje
#3 Ramon
31/01/2006 - 00:47 | Informe spam
No. porque lo que quiero filtrar es el conjunto resultante lo cual no puedo
lograr desde la funcion. Y si en el remoto caso de que se pudiera la
funcion no fuera muy reusable.

"Isaias" escribió en el mensaje
news:
Debes enviar a tu FUNCION (tal vez un boleano), la indicación de lo que
quires que te regrese y manejar esta condicion en la propia funcion.

dbo.CalculaBalance(codcli,@FECHA, 1)

o

dbo.CalculaBalance(codcli,@FECHA, 0)


Saludos
IIslas


"Ramon" escribió:

Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as
balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al
ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de
cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.




Respuesta Responder a este mensaje
#4 Ramon
31/01/2006 - 00:49 | Informe spam

En este caso debes usar la funcion nuevamente en la clausula "where" o
puedes usar la sentencia como una tabla derivada.




Habria alguna implicacion en la eficiencia o rapidez usar uno u otro metodo
?






select *
from (
select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as
balcli
from clientes
where statcli=1
) as a
where balcli > 0
go


AMB

"Ramon" wrote:

Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as
balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al
ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de
cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.




Respuesta Responder a este mensaje
#5 Alfredo Crisostomo
31/01/2006 - 04:01 | Informe spam
Yo pienso que si repites la funcion en el Where del query, si la escribes
tal cual esta en la lista del select, Sql server debe ser lo suficiente
inteligente para ejecutarla una sola vez.

Me imagino que es asi. Alguien podria corroborar esto ?


"Ramon" escribió en el mensaje
news:uku%
>
En este caso debes usar la funcion nuevamente en la clausula "where" o
puedes usar la sentencia como una tabla derivada.




Habria alguna implicacion en la eficiencia o rapidez usar uno u otro
metodo ?






select *
from (
select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as
balcli
from clientes
where statcli=1
) as a
where balcli > 0
go


AMB

"Ramon" wrote:

Quiero hacer esto digamos para sacar una lista de clientes activos
(statcli=1) con
su balance calculado en la funcion CalculaBalance:

select codcli, nomcli, statcli, dbo.CalculaBalance(codcli,@FECHA) as
balcli
from clientes
where statcli=1

Pero lo que quiero es hacer que solo me salgan los clientes que tienen
el
balance positivo es decir que deben dinero.
Algo como agregarle una condicion al where: "balcli > 0" pero al
ponersela
me la rechaza.

Como le hago ? Nota: la funcion calcula balance recibe un codigo de
cliente
y una fecha de corte y calcula el balance basado en otra tabla de
movimientos. Pero la idea es hacerlo usando la misma funcion.










email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida