referenciar alias en where

15/03/2007 - 18:00 por etragu | Informe spam
buenas
alguien sabe si existe alguna manera de referenciar un alias en el where,
seria algo asi

select *,
case cod_aporte
when '322559' then 11
when '358627' then 2.5
when '359627' then 10
when '326558' then 31.18
else 0
end as importecorrecto
from recepcion
where origen = 'ANS' AND PERIODO = '200611' and cod_aporte
in ('322559','358627','359627','326558') and importe <> importecorrecto

gracias

Preguntas similare

Leer las respuestas

#6 Javier Loria
16/03/2007 - 15:07 | Informe spam
Hola:
Es posible que Mariano se refiera a la posiblidad de hacer CTEs en SQL
2005.
Si este es el caso, el codigo es:
WITH RecepcionConImporteCorrecto ()
AS
(
select *,
case cod_aporte
when '322559' then 11
when '358627' then 2.5
when '359627' then 10
when '326558' then 31.18
else 0
end as importecorrecto
from recepcion
)
SELECT * FROM RecepcionConImporteCorrecto
WHERE origen = 'ANS'
AND PERIODO = '200611'
AND cod_aporte in ('322559','358627','359627','326558')
AND importe <> importecorrecto
El WITH al inicio te permite definir un tipo de sub-consulta/vista que
luego puedes referenciar incluyendo la columna importecorrecto.
Saludos,


Javier Loria
Costa Rica (MVP)
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.

"Carlos M. Calvelo" wrote in message
news:
On 16 mrt, 13:01, "Jose Mariano Alvarez"
wrote:
La referencia la puedes usar en 2005 pero no en 2000.




Hola Jose,

No entiendo qué quieres decir.
El ejemplo sí se puede usar en 2000.
Y qué es lo que si puedes usar en 2005 y no en 2000?
El ejemplo original de etragu?

Saludos,
Carlos


Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)

"Carlos M. Calvelo" wrote in
messagenews:
On 15 mrt, 18:00, "etragu" <Nando> wrote:





> buenas
> alguien sabe si existe alguna manera de referenciar un alias en el
> where,
> seria algo asi

> select *,
> case cod_aporte
> when '322559' then 11
> when '358627' then 2.5
> when '359627' then 10
> when '326558' then 31.18
> else 0
> end as importecorrecto
> from recepcion
> where origen = 'ANS' AND PERIODO = '200611' and cod_aporte
> in ('322559','358627','359627','326558') and importe <> importecorrecto

> gracias

Hola,

'Referenciar un alias' no; pero si puedes evitar la repetición del
case.

Por ejemplo así:

select * from (
select *,
case cod_aporte
when '322559' then 11
when '358627' then 2.5
when '359627' then 10
when '326558' then 31.18
else 0
end as importecorrecto
from recepcion
where origen = 'ANS' AND PERIODO = '200611' and cod_aporte
in ('322559','358627','359627','326558')
) t
where t.importe <> t.importecorrecto

Saludos,
Carlos

Respuesta Responder a este mensaje
#7 Carlos M. Calvelo
16/03/2007 - 16:42 | Informe spam
Hola Javier,

On 16 mrt, 15:07, "Javier Loria" wrote:
Hola:
Es posible que Mariano se refiera a la posiblidad de hacer CTEs en SQL
2005.



Vete tu a saber. Un poco de confusión, creo yo.
En todo caso ahí estan los ejemplos para el OP.

Soludos,
Carlos
Respuesta Responder a este mensaje
#8 Carlos M. Calvelo
16/03/2007 - 16:44 | Informe spam
> Soludos,



Saludos.. claro! :)

Carlos
Respuesta Responder a este mensaje
#9 Jose Mariano Alvarez
16/03/2007 - 23:21 | Informe spam
Javier me referia a la posibilidad de referirse al alias elegido de la
columna que tiene el CASE.
En 2000 no te queda mas remedio que repetir el CASE pero en 2005 puedes
poner directamente el alias como propone Carlos y funciona bien.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)




"Javier Loria" wrote in message
news:
Hola:
Es posible que Mariano se refiera a la posiblidad de hacer CTEs en SQL
2005.
Si este es el caso, el codigo es:
> WITH RecepcionConImporteCorrecto ()
AS
(
select *,
case cod_aporte
when '322559' then 11
when '358627' then 2.5
when '359627' then 10
when '326558' then 31.18
else 0
end as importecorrecto
from recepcion
)
SELECT * FROM RecepcionConImporteCorrecto
WHERE origen = 'ANS'
AND PERIODO = '200611'
AND cod_aporte in ('322559','358627','359627','326558')
AND importe <> importecorrecto
> El WITH al inicio te permite definir un tipo de sub-consulta/vista que
luego puedes referenciar incluyendo la columna importecorrecto.
Saludos,


Javier Loria
Costa Rica (MVP)
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.

"Carlos M. Calvelo" wrote in message
news:
On 16 mrt, 13:01, "Jose Mariano Alvarez"
wrote:
La referencia la puedes usar en 2005 pero no en 2000.




Hola Jose,

No entiendo qué quieres decir.
El ejemplo sí se puede usar en 2000.
Y qué es lo que si puedes usar en 2005 y no en 2000?
El ejemplo original de etragu?

Saludos,
Carlos


Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)

"Carlos M. Calvelo" wrote in
messagenews:
On 15 mrt, 18:00, "etragu" <Nando> wrote:





> buenas
> alguien sabe si existe alguna manera de referenciar un alias en el
> where,
> seria algo asi

> select *,
> case cod_aporte
> when '322559' then 11
> when '358627' then 2.5
> when '359627' then 10
> when '326558' then 31.18
> else 0
> end as importecorrecto
> from recepcion
> where origen = 'ANS' AND PERIODO = '200611' and cod_aporte
> in ('322559','358627','359627','326558') and importe <> importecorrecto

> gracias

Hola,

'Referenciar un alias' no; pero si puedes evitar la repetición del
case.

Por ejemplo así:

select * from (
select *,
case cod_aporte
when '322559' then 11
when '358627' then 2.5
when '359627' then 10
when '326558' then 31.18
else 0
end as importecorrecto
from recepcion
where origen = 'ANS' AND PERIODO = '200611' and cod_aporte
in ('322559','358627','359627','326558')
) t
where t.importe <> t.importecorrecto

Saludos,
Carlos





Respuesta Responder a este mensaje
#10 Carlos M. Calvelo
17/03/2007 - 01:18 | Informe spam
On 16 mrt, 23:21, "Jose Mariano Alvarez"
wrote:
Javier me referia a la posibilidad de referirse al alias elegido de la
columna que tiene el CASE.
En 2000 no te queda mas remedio que repetir el CASE pero en 2005 puedes
poner directamente el alias como propone Carlos y funciona bien.




Jose, creo que sigue habiendo confusión;
lo propuesto también funciona en 2000 y
evita el repetir el CASE.

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