Condicional en una consulta Case

07/10/2004 - 01:02 por Alma Alicia Gutierrez | Informe spam
Estimados Amigos...
TEngo una consulta en la que pretendo mostrar los saldos por intervalos de
antiguedad de tiempo. Con la consulta siguiente trato te mostrar estos
datos.. pero no encuentro la forma de definir el griterio de tiempo. ejm:
When (Antiguedad)<0, When (Antiguedad)>0 and (Antiguedad)<`, etc..

Si alguien tiene una recomendacion estare agradecida..

Saludos@
AA.

SELECT OP_Nombre, SUM(CASE (ANTIGUEDAD) WHEN 30 THEN SALDO ELSE 0 END)
AS MES, SUM(CASE (ANTIGUEDAD) WHEN 60 THEN SALDO ELSE 0 END) AS MES1,
SUM(CASE (ANTIGUEDAD) WHEN 90 THEN SALDO ELSE 0 END) AS MES2, SUM(CASE
(ANTIGUEDAD) WHEN 120 THEN SALDO ELSE 0 END) AS MES3
FROM dbo.CST_CONTRO_CREDITO
GROUP BY OP_Nombre

Preguntas similare

Leer las respuestas

#1 MAXI
07/10/2004 - 01:51 | Informe spam
Hola, el tema es que hay una incompatibilidad en los criterios!! si pones >=
30 y <` estaras mostrando algunos datos duplicados y creo que eso es
incorrecto!!

No seria mejor >= 60?




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Alma Alicia Gutierrez" escribió en el mensaje
news:%23qP4fi$
Estimados Amigos...
TEngo una consulta en la que pretendo mostrar los saldos por intervalos de
antiguedad de tiempo. Con la consulta siguiente trato te mostrar estos
datos.. pero no encuentro la forma de definir el griterio de tiempo. ejm:
When (Antiguedad)<0, When (Antiguedad)>0 and (Antiguedad)<`, etc..

Si alguien tiene una recomendacion estare agradecida..

Saludos@
AA.

SELECT OP_Nombre, SUM(CASE (ANTIGUEDAD) WHEN 30 THEN SALDO ELSE 0 END)
AS MES, SUM(CASE (ANTIGUEDAD) WHEN 60 THEN SALDO ELSE 0 END) AS MES1,
SUM(CASE (ANTIGUEDAD) WHEN 90 THEN SALDO ELSE 0 END) AS MES2, SUM(CASE
(ANTIGUEDAD) WHEN 120 THEN SALDO ELSE 0 END) AS MES3
FROM dbo.CST_CONTRO_CREDITO
GROUP BY OP_Nombre


Respuesta Responder a este mensaje
#2 Alma Alicia Gutierrez
07/10/2004 - 15:58 | Informe spam
Si tienes razon, al transcribir lo hice mal... pero lo que pasa es que a l
usar esa instruccion me envia un error..
Es correcto usar esa instruccion con CASE.?

por eso supongo que se hace de otra forma. es ahi mi pregunta..

Saludos@

AA.

"MAXI" escribió en el mensaje
news:OJKMn9$
Hola, el tema es que hay una incompatibilidad en los criterios!! si pones
30 y <` estaras mostrando algunos datos duplicados y creo que eso es


incorrecto!!

No seria mejor >= 60?




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Alma Alicia Gutierrez" escribió en el mensaje
news:%23qP4fi$
> Estimados Amigos...
> TEngo una consulta en la que pretendo mostrar los saldos por intervalos


de
> antiguedad de tiempo. Con la consulta siguiente trato te mostrar estos
> datos.. pero no encuentro la forma de definir el griterio de tiempo.


ejm:
> When (Antiguedad)<0, When (Antiguedad)>0 and (Antiguedad)<`, etc..
>
> Si alguien tiene una recomendacion estare agradecida..
>
> Saludos@
> AA.
>
> SELECT OP_Nombre, SUM(CASE (ANTIGUEDAD) WHEN 30 THEN SALDO ELSE 0


END)
> AS MES, SUM(CASE (ANTIGUEDAD) WHEN 60 THEN SALDO ELSE 0 END) AS MES1,
> SUM(CASE (ANTIGUEDAD) WHEN 90 THEN SALDO ELSE 0 END) AS MES2, SUM(CASE
> (ANTIGUEDAD) WHEN 120 THEN SALDO ELSE 0 END) AS MES3
> FROM dbo.CST_CONTRO_CREDITO
> GROUP BY OP_Nombre
>
>


Respuesta Responder a este mensaje
#3 Maxi
07/10/2004 - 16:30 | Informe spam
Sip, mira este ejemplo:

USE NORTHWIND
GO

SELECT ORDERID, CASE WHEN freight <= 10 then 'x1' when freight <00 then
'x2' end
FROM ORDERS




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



"Alma Alicia Gutierrez" escribió en el mensaje
news:%
Si tienes razon, al transcribir lo hice mal... pero lo que pasa es que a l
usar esa instruccion me envia un error..
Es correcto usar esa instruccion con CASE.?

por eso supongo que se hace de otra forma. es ahi mi pregunta..

Saludos@

AA.

"MAXI" escribió en el mensaje
news:OJKMn9$
> Hola, el tema es que hay una incompatibilidad en los criterios!! si


pones
>> > 30 y <` estaras mostrando algunos datos duplicados y creo que eso es
> incorrecto!!
>
> No seria mejor >= 60?
>
>
>
>
> Maxi
>
> Buenos Aires - Argentina
> Desarrollador .NET 3 Estrellas
> Microsoft User Group (MUG)
> Mail: Maxi_accotto[arroba]speedy.com.ar
>
> Msn Messager:
>
> "Alma Alicia Gutierrez" escribió en el


mensaje
> news:%23qP4fi$
> > Estimados Amigos...
> > TEngo una consulta en la que pretendo mostrar los saldos por


intervalos
de
> > antiguedad de tiempo. Con la consulta siguiente trato te mostrar estos
> > datos.. pero no encuentro la forma de definir el griterio de tiempo.
ejm:
> > When (Antiguedad)<0, When (Antiguedad)>0 and (Antiguedad)<`,


etc..
> >
> > Si alguien tiene una recomendacion estare agradecida..
> >
> > Saludos@
> > AA.
> >
> > SELECT OP_Nombre, SUM(CASE (ANTIGUEDAD) WHEN 30 THEN SALDO ELSE 0
END)
> > AS MES, SUM(CASE (ANTIGUEDAD) WHEN 60 THEN SALDO ELSE 0 END) AS MES1,
> > SUM(CASE (ANTIGUEDAD) WHEN 90 THEN SALDO ELSE 0 END) AS MES2, SUM(CASE
> > (ANTIGUEDAD) WHEN 120 THEN SALDO ELSE 0 END) AS MES3
> > FROM dbo.CST_CONTRO_CREDITO
> > GROUP BY OP_Nombre
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004
Respuesta Responder a este mensaje
#4 Alma Alicia Gutierrez
07/10/2004 - 17:12 | Informe spam
Gracias, Muchas.. ya lo he resuelto...
ALTER VIEW dbo.CST_ANTIGUEDAD_X_PERIODO
AS
SELECT OP_Nombre, SUM(CASE WHEN (ANTIGUEDAD)<0 THEN SALDO ELSE 0
END) AS MES,
SUM(CASE WHEN (ANTIGUEDAD)>30 and (ANTIGUEDAD)<` THEN SALDO ELSE
0 END) AS MES1,
SUM(CASE WHEN (ANTIGUEDAD)>60 and (ANTIGUEDAD)< THEN SALDO ELSE
0 END) AS MES2,
SUM(CASE WHEN (ANTIGUEDAD)>90 THEN SALDO ELSE 0 END)AS MES3
FROM dbo.CST_CONTRO_CREDITO
GROUP BY OP_Nombre
"Maxi" escribió en el mensaje
news:%
Sip, mira este ejemplo:

USE NORTHWIND
GO

SELECT ORDERID, CASE WHEN freight <= 10 then 'x1' when freight <00 then
'x2' end
FROM ORDERS




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



"Alma Alicia Gutierrez" escribió en el mensaje
news:%
> Si tienes razon, al transcribir lo hice mal... pero lo que pasa es que a


l
> usar esa instruccion me envia un error..
> Es correcto usar esa instruccion con CASE.?
>
> por eso supongo que se hace de otra forma. es ahi mi pregunta..
>
> Saludos@
>
> AA.
>
> "MAXI" escribió en el mensaje
> news:OJKMn9$
> > Hola, el tema es que hay una incompatibilidad en los criterios!! si
pones
> >> > > 30 y <` estaras mostrando algunos datos duplicados y creo que eso es
> > incorrecto!!
> >
> > No seria mejor >= 60?
> >
> >
> >
> >
> > Maxi
> >
> > Buenos Aires - Argentina
> > Desarrollador .NET 3 Estrellas
> > Microsoft User Group (MUG)
> > Mail: Maxi_accotto[arroba]speedy.com.ar
> >
> > Msn Messager:
> >
> > "Alma Alicia Gutierrez" escribió en el
mensaje
> > news:%23qP4fi$
> > > Estimados Amigos...
> > > TEngo una consulta en la que pretendo mostrar los saldos por
intervalos
> de
> > > antiguedad de tiempo. Con la consulta siguiente trato te mostrar


estos
> > > datos.. pero no encuentro la forma de definir el griterio de tiempo.
> ejm:
> > > When (Antiguedad)<0, When (Antiguedad)>0 and (Antiguedad)<`,
etc..
> > >
> > > Si alguien tiene una recomendacion estare agradecida..
> > >
> > > Saludos@
> > > AA.
> > >
> > > SELECT OP_Nombre, SUM(CASE (ANTIGUEDAD) WHEN 30 THEN SALDO ELSE


0
> END)
> > > AS MES, SUM(CASE (ANTIGUEDAD) WHEN 60 THEN SALDO ELSE 0 END) AS


MES1,
> > > SUM(CASE (ANTIGUEDAD) WHEN 90 THEN SALDO ELSE 0 END) AS MES2,


SUM(CASE
> > > (ANTIGUEDAD) WHEN 120 THEN SALDO ELSE 0 END) AS MES3
> > > FROM dbo.CST_CONTRO_CREDITO
> > > GROUP BY OP_Nombre
> > >
> > >
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004


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