como le hago???

28/09/2004 - 20:48 por Chente | Informe spam
que tal amigo@s, trate de buscar antes en el foro la respuesta pero no supe
como buscar lo que necesitaba, vamos, no hay titulo alguno. a lo mejor
podria ser buscando case dentro del where, ya que es algo como lo requiero.

tengo una tabla con 3 campos

tabla
reporte peritaje1 peritaje2
23 null 4
45 null null
56 3 1
78 1 null
88 null null
96 3 4
97 null 2

lo que quiero crear un procedimiento almacenado, desde el cual a partir de
un parametro que le pase, en el cual le diga quiero los que tienen peritaje
o quiero los que aun no tienen peritaje, esto es, cuando tienen dato en
peritaje1 o peritaje2 es que se dice que tienen peritaje, cuando los dos
campos estan en null, se dice que aun no tienen peritaje.

entonces yo la consulta la tenia asi, pero no mas no.

declare @peritaje char(2)

set @peritaje = 'SP' --Sin peritaje

select reporte from tabla
where case when @peritaje = 'SP' then isnull(svperitaje2, svperitaje) is
null
else isnull(svperitaje2, svperitaje) is not null end


asi cuando al proc. le paso 'SP', me devualva los que no tienen peritaje, y
cuando le envie 'CP' me devuelva los que tienen peritaje.

por ahora lo que tengo dentro del proc. es esto

if @peritaje = 'SP'
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is null
end
else
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is not null
end


espero haber sido claro, y como siempre espero contar con su ayuda.



Vicente López.

Preguntas similare

Leer las respuestas

#1 Ygnacio Durán
28/09/2004 - 22:01 | Informe spam
Un saludo Vicente,

Que tal esto:


create table #tmp (reporte smallint, peritaje1 smallint, peritaje2 smallint)
insert into #tmp values (23,null, 4)
insert into #tmp values (45, null, null)
insert into #tmp values (56, 3, 1)
insert into #tmp values (78, 1, null)
insert into #tmp values (88, null, null)
insert into #tmp values (96, 3, 4)
insert into #tmp values (97, null, 2)


declare @peritaje char(2)

set @peritaje = 'CP' --Sin peritaje

select reporte from #tmp
where ( (@peritaje = 'SP' AND peritaje2 is null)
OR (@peritaje = 'CP' AND peritaje2 is not null))

drop table #tmp


*** Ygnacio Durán ***



"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:
que tal , trate de buscar antes en el foro la respuesta pero no


supe
como buscar lo que necesitaba, vamos, no hay titulo alguno. a lo mejor
podria ser buscando case dentro del where, ya que es algo como lo


requiero.

tengo una tabla con 3 campos

tabla
reporte peritaje1 peritaje2
23 null 4
45 null null
56 3 1
78 1 null
88 null null
96 3 4
97 null 2

lo que quiero crear un procedimiento almacenado, desde el cual a partir de
un parametro que le pase, en el cual le diga quiero los que tienen


peritaje
o quiero los que aun no tienen peritaje, esto es, cuando tienen dato en
peritaje1 o peritaje2 es que se dice que tienen peritaje, cuando los dos
campos estan en null, se dice que aun no tienen peritaje.

entonces yo la consulta la tenia asi, pero no mas no.

declare @peritaje char(2)

set @peritaje = 'SP' --Sin peritaje

select reporte from tabla
where case when @peritaje = 'SP' then isnull(svperitaje2, svperitaje) is
null
else isnull(svperitaje2, svperitaje) is not null end


asi cuando al proc. le paso 'SP', me devualva los que no tienen peritaje,


y
cuando le envie 'CP' me devuelva los que tienen peritaje.

por ahora lo que tengo dentro del proc. es esto

if @peritaje = 'SP'
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is null
end
else
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is not null
end


espero haber sido claro, y como siempre espero contar con su ayuda.



Vicente López.


Respuesta Responder a este mensaje
#2 Maxi
28/09/2004 - 22:05 | Informe spam
Hola, una forma podria ser armando en el CASE que si algo es nulo lo
transforma en 0 y si no es nulo en 1. luego haces la multiplicacion y si te
da 0 entonces es que no tiene y si da <> 0 si tiene

Entonces esto lo podrias poner como parte del SP (parametro) y eso lo pones
en el Where!!

Me explico?

ojo lo pense a vuelo de pajaro porque no me da el tiempo para armarte un
ejemplito, pero si te aguantas a la noche te armo uno.

Bye


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:
que tal , trate de buscar antes en el foro la respuesta pero no


supe
como buscar lo que necesitaba, vamos, no hay titulo alguno. a lo mejor
podria ser buscando case dentro del where, ya que es algo como lo


requiero.

tengo una tabla con 3 campos

tabla
reporte peritaje1 peritaje2
23 null 4
45 null null
56 3 1
78 1 null
88 null null
96 3 4
97 null 2

lo que quiero crear un procedimiento almacenado, desde el cual a partir de
un parametro que le pase, en el cual le diga quiero los que tienen


peritaje
o quiero los que aun no tienen peritaje, esto es, cuando tienen dato en
peritaje1 o peritaje2 es que se dice que tienen peritaje, cuando los dos
campos estan en null, se dice que aun no tienen peritaje.

entonces yo la consulta la tenia asi, pero no mas no.

declare @peritaje char(2)

set @peritaje = 'SP' --Sin peritaje

select reporte from tabla
where case when @peritaje = 'SP' then isnull(svperitaje2, svperitaje) is
null
else isnull(svperitaje2, svperitaje) is not null end


asi cuando al proc. le paso 'SP', me devualva los que no tienen peritaje,


y
cuando le envie 'CP' me devuelva los que tienen peritaje.

por ahora lo que tengo dentro del proc. es esto

if @peritaje = 'SP'
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is null
end
else
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is not null
end


espero haber sido claro, y como siempre espero contar con su ayuda.



Vicente López.







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.769 / Virus Database: 516 - Release Date: 24/09/2004
Respuesta Responder a este mensaje
#3 Tinoco
28/09/2004 - 22:14 | Informe spam
Hola vicente

Yo creo que esto te debe servir:

select reporte
from tabla
where (@peritaje = 'SP' and isnull(svperitaje2,
svperitaje) is null)
or (@peritaje = 'CP' and isnull(svperitaje2,
svperitaje) is not null)

Espero te sirva mi ayuda...

Hermilson Tinoco

que tal , trate de buscar antes en el foro la


respuesta pero no supe
como buscar lo que necesitaba, vamos, no hay titulo


alguno. a lo mejor
podria ser buscando case dentro del where, ya que es


algo como lo requiero.

tengo una tabla con 3 campos

tabla
reporte peritaje1 peritaje2
23 null 4
45 null null
56 3 1
78 1 null
88 null null
96 3 4
97 null 2

lo que quiero crear un procedimiento almacenado, desde


el cual a partir de
un parametro que le pase, en el cual le diga quiero los


que tienen peritaje
o quiero los que aun no tienen peritaje, esto es, cuando


tienen dato en
peritaje1 o peritaje2 es que se dice que tienen


peritaje, cuando los dos
campos estan en null, se dice que aun no tienen peritaje.

entonces yo la consulta la tenia asi, pero no mas no.

declare @peritaje char(2)

set @peritaje = 'SP' --Sin peritaje

select reporte from tabla
where case when @peritaje = 'SP' then isnull


(svperitaje2, svperitaje) is
null
else isnull(svperitaje2, svperitaje) is not


null end


asi cuando al proc. le paso 'SP', me devualva los que no


tienen peritaje, y
cuando le envie 'CP' me devuelva los que tienen peritaje.

por ahora lo que tengo dentro del proc. es esto

if @peritaje = 'SP'
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is null
end
else
begin
select reporte from tabla
where isnull(svperitaje2, svperitaje) is not null
end


espero haber sido claro, y como siempre espero contar


con su ayuda.

Vicente López.
Respuesta Responder a este mensaje
#4 Javier Loria
28/09/2004 - 23:24 | Informe spam
Hola Vicente:
Utilizando el DDL de Ygnacio, podrias usar:
==ÞCLARE @peritaje char(2)
SET @peritaje = 'CP' --Sin peritaje

IF @Peritaje='CP'
BEGIN
SELECT Reporte
FROM #tmp
WHERE (COALESCE(Peritaje1,Peritaje2) IS NULL)
END
ELSE
BEGIN
SELECT Reporte
FROM #tmp
WHERE (COALESCE(Peritaje1,Peritaje2) IS NOT NULL)
END
Aun cuando es posible resumir la condicion en un solo SELECT en este
caso no me parece que hay beneficio y hace mas confuso el codigo.
Adicionalmente puede estropear planes de mantenimiento.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Ygnacio Durán" <yduranArrobAmixmail.com> wrote in message
news:
Un saludo Vicente,

Que tal esto:


create table #tmp (reporte smallint, peritaje1 smallint, peritaje2


smallint)
insert into #tmp values (23,null, 4)
insert into #tmp values (45, null, null)
insert into #tmp values (56, 3, 1)
insert into #tmp values (78, 1, null)
insert into #tmp values (88, null, null)
insert into #tmp values (96, 3, 4)
insert into #tmp values (97, null, 2)


declare @peritaje char(2)

set @peritaje = 'CP' --Sin peritaje

select reporte from #tmp
where ( (@peritaje = 'SP' AND peritaje2 is null)
OR (@peritaje = 'CP' AND peritaje2 is not null))

drop table #tmp


*** Ygnacio Durán ***



"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:
> que tal , trate de buscar antes en el foro la respuesta pero no
supe
> como buscar lo que necesitaba, vamos, no hay titulo alguno. a lo mejor
> podria ser buscando case dentro del where, ya que es algo como lo
requiero.
>
> tengo una tabla con 3 campos
>
> tabla
> reporte peritaje1 peritaje2
> 23 null 4
> 45 null null
> 56 3 1
> 78 1 null
> 88 null null
> 96 3 4
> 97 null 2
>
> lo que quiero crear un procedimiento almacenado, desde el cual a partir


de
> un parametro que le pase, en el cual le diga quiero los que tienen
peritaje
> o quiero los que aun no tienen peritaje, esto es, cuando tienen dato en
> peritaje1 o peritaje2 es que se dice que tienen peritaje, cuando los dos
> campos estan en null, se dice que aun no tienen peritaje.
>
> entonces yo la consulta la tenia asi, pero no mas no.
>
> declare @peritaje char(2)
>
> set @peritaje = 'SP' --Sin peritaje
>
> select reporte from tabla
> where case when @peritaje = 'SP' then isnull(svperitaje2, svperitaje) is
> null
> else isnull(svperitaje2, svperitaje) is not null end
>
>
> asi cuando al proc. le paso 'SP', me devualva los que no tienen


peritaje,
y
> cuando le envie 'CP' me devuelva los que tienen peritaje.
>
> por ahora lo que tengo dentro del proc. es esto
>
> if @peritaje = 'SP'
> begin
> select reporte from tabla
> where isnull(svperitaje2, svperitaje) is null
> end
> else
> begin
> select reporte from tabla
> where isnull(svperitaje2, svperitaje) is not null
> end
>
>
> espero haber sido claro, y como siempre espero contar con su ayuda.
>
>
>
> Vicente López.
>
>


Respuesta Responder a este mensaje
#5 Chente
29/09/2004 - 16:53 | Informe spam
EXCELENTE, muchas Gracias Ygnacio, lo modifique un poquito y quedo listo,
muy buena solución.


Gracias.

Vicente López.

"Ygnacio Durán" <yduranArrobAmixmail.com> escribió en el mensaje
news:
Un saludo Vicente,

Que tal esto:


create table #tmp (reporte smallint, peritaje1 smallint, peritaje2


smallint)
insert into #tmp values (23,null, 4)
insert into #tmp values (45, null, null)
insert into #tmp values (56, 3, 1)
insert into #tmp values (78, 1, null)
insert into #tmp values (88, null, null)
insert into #tmp values (96, 3, 4)
insert into #tmp values (97, null, 2)


declare @peritaje char(2)

set @peritaje = 'CP' --Sin peritaje

select reporte from #tmp
where ( (@peritaje = 'SP' AND peritaje2 is null)
OR (@peritaje = 'CP' AND peritaje2 is not null))

drop table #tmp


*** Ygnacio Durán ***



"Chente" <foro[@]ausa.com.mx> escribió en el mensaje
news:
> que tal , trate de buscar antes en el foro la respuesta pero no
supe
> como buscar lo que necesitaba, vamos, no hay titulo alguno. a lo mejor
> podria ser buscando case dentro del where, ya que es algo como lo
requiero.
>
> tengo una tabla con 3 campos
>
> tabla
> reporte peritaje1 peritaje2
> 23 null 4
> 45 null null
> 56 3 1
> 78 1 null
> 88 null null
> 96 3 4
> 97 null 2
>
> lo que quiero crear un procedimiento almacenado, desde el cual a partir


de
> un parametro que le pase, en el cual le diga quiero los que tienen
peritaje
> o quiero los que aun no tienen peritaje, esto es, cuando tienen dato en
> peritaje1 o peritaje2 es que se dice que tienen peritaje, cuando los dos
> campos estan en null, se dice que aun no tienen peritaje.
>
> entonces yo la consulta la tenia asi, pero no mas no.
>
> declare @peritaje char(2)
>
> set @peritaje = 'SP' --Sin peritaje
>
> select reporte from tabla
> where case when @peritaje = 'SP' then isnull(svperitaje2, svperitaje) is
> null
> else isnull(svperitaje2, svperitaje) is not null end
>
>
> asi cuando al proc. le paso 'SP', me devualva los que no tienen


peritaje,
y
> cuando le envie 'CP' me devuelva los que tienen peritaje.
>
> por ahora lo que tengo dentro del proc. es esto
>
> if @peritaje = 'SP'
> begin
> select reporte from tabla
> where isnull(svperitaje2, svperitaje) is null
> end
> else
> begin
> select reporte from tabla
> where isnull(svperitaje2, svperitaje) is not null
> end
>
>
> espero haber sido claro, y como siempre espero contar con su ayuda.
>
>
>
> Vicente López.
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida