Select top

26/08/2004 - 22:45 por Julio | Informe spam
Hola grupo

Tengo la siguiente tabla

Tabla A1


ClienteID fecha prueba

1 01/01/04 0.50
1 01/02/04 0.25
1 01/03/04 0.71
2 01/01/04 0.3
2 01/02/04 0.9
2 01/03/04 0.6

Como puedo hacer una vista que me devuelva las ultimas dos fechas por
clientes

Preguntas similare

Leer las respuestas

#1 MAXI
27/08/2004 - 02:18 | Informe spam
Hola, si solo te importan las fechas y suponiendo que si hay empates vale la
ultima, podrias aplicar algo asi como:

CREATE TABLE #PEPE (ID INT, FECHA DATETIME)

INSERT INTO #PEPE VALUES (1,GETDATE())
INSERT INTO #PEPE VALUES (1,GETDATE()+1)
INSERT INTO #PEPE VALUES (1,GETDATE()+2)
INSERT INTO #PEPE VALUES (2,GETDATE())


SELECT PEP1.ID, PEP1.FECHA AS ULTIMA, (SELECT MAX(FECHA) FROM #PEPE PEP2
WHERE
PEP2.FECHA < PEP1.FECHA AND PEP1.ID = PEP2.ID) AS ANTEULTIMA

FROM (select id,max(fecha) as fecha from #PEPE group by id)
PEP1


Suerte




Maxi

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

"Julio" escribió en el mensaje
news:
Hola grupo

Tengo la siguiente tabla

Tabla A1


ClienteID fecha prueba

1 01/01/04 0.50
1 01/02/04 0.25
1 01/03/04 0.71
2 01/01/04 0.3
2 01/02/04 0.9
2 01/03/04 0.6

Como puedo hacer una vista que me devuelva las ultimas dos fechas por
clientes


Respuesta Responder a este mensaje
#2 Julio
27/08/2004 - 14:09 | Informe spam
Hola MAx, lo que necesito es que si un cliente tiene varios filas insertada
me devuelva las ultimas N filas que yo necesite agrupados por clientes, es
decir si el
cliente 1 tiene cinco filas insertada y yo necesito las ultimas tres filas
que me la devuelva el select tanto para el cliente 1 como para todos.



esto es un ejemplo de lo que tiene la tabla

Clienteid fecha prueba
1 01/01/04 5
1 01/02/04 4
1 01/03/04 9
1 01/04/04 8
1 01/05/04 11
2 01/01/04 15
2 01/02/04 7
2 01/03/04 3
2 01/04/04 1
2 01/5/04 6


Yo quiero hacer un select que me devuelva los ultimas tre filas que se
insertaron

el select me quedaria asi:

Clienteid fecha prueba
1 01/03/04 9
1 01/04/04 8
1 01/05/04 11
2 01/03/04 3
2 01/04/04 1
2 01/05/04 6













"MAXI" wrote in message
news:%
Hola, si solo te importan las fechas y suponiendo que si hay empates vale


la
ultima, podrias aplicar algo asi como:

CREATE TABLE #PEPE (ID INT, FECHA DATETIME)

INSERT INTO #PEPE VALUES (1,GETDATE())
INSERT INTO #PEPE VALUES (1,GETDATE()+1)
INSERT INTO #PEPE VALUES (1,GETDATE()+2)
INSERT INTO #PEPE VALUES (2,GETDATE())


SELECT PEP1.ID, PEP1.FECHA AS ULTIMA, (SELECT MAX(FECHA) FROM #PEPE PEP2
WHERE
PEP2.FECHA < PEP1.FECHA AND PEP1.ID = PEP2.ID) AS ANTEULTIMA

FROM (select id,max(fecha) as fecha from #PEPE group by id)
PEP1

>
Suerte




Maxi

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

"Julio" escribió en el mensaje
news:
> Hola grupo
>
> Tengo la siguiente tabla
>
> Tabla A1
>
>
> ClienteID fecha prueba
>
> 1 01/01/04 0.50
> 1 01/02/04 0.25
> 1 01/03/04 0.71
> 2 01/01/04 0.3
> 2 01/02/04 0.9
> 2 01/03/04 0.6
>
> Como puedo hacer una vista que me devuelva las ultimas dos fechas por
> clientes
>
>


Respuesta Responder a este mensaje
#3 Maxi
27/08/2004 - 14:23 | Informe spam
Hola, pero veamos una cosa: la cantidad a retornar es fija? siempre queres
las ultimas 3, las ultimas 4, como definis esto?


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



"Julio" escribió en el mensaje
news:
Hola MAx, lo que necesito es que si un cliente tiene varios filas


insertada
me devuelva las ultimas N filas que yo necesite agrupados por clientes, es
decir si el
cliente 1 tiene cinco filas insertada y yo necesito las ultimas tres filas
que me la devuelva el select tanto para el cliente 1 como para todos.



esto es un ejemplo de lo que tiene la tabla

Clienteid fecha prueba
1 01/01/04 5
1 01/02/04 4
1 01/03/04 9
1 01/04/04 8
1 01/05/04 11
2 01/01/04 15
2 01/02/04 7
2 01/03/04 3
2 01/04/04 1
2 01/5/04 6


Yo quiero hacer un select que me devuelva los ultimas tre filas que se
insertaron

el select me quedaria asi:

Clienteid fecha prueba
1 01/03/04 9
1 01/04/04 8
1 01/05/04 11
2 01/03/04 3
2 01/04/04 1
2 01/05/04 6













"MAXI" wrote in message
news:%
> Hola, si solo te importan las fechas y suponiendo que si hay empates


vale
la
> ultima, podrias aplicar algo asi como:
>
> CREATE TABLE #PEPE (ID INT, FECHA DATETIME)
>
> INSERT INTO #PEPE VALUES (1,GETDATE())
> INSERT INTO #PEPE VALUES (1,GETDATE()+1)
> INSERT INTO #PEPE VALUES (1,GETDATE()+2)
> INSERT INTO #PEPE VALUES (2,GETDATE())
>
>
> SELECT PEP1.ID, PEP1.FECHA AS ULTIMA, (SELECT MAX(FECHA) FROM #PEPE PEP2
> WHERE
> PEP2.FECHA < PEP1.FECHA AND PEP1.ID = PEP2.ID) AS ANTEULTIMA
>
> FROM (select id,max(fecha) as fecha from #PEPE group by id)
> PEP1
>
> > >
> Suerte
>
>
>
>
> Maxi
>
> Buenos Aires - Argentina
> Desarrollador .NET 3 Estrellas
> Microsoft User Group (MUG)
> Mail: Maxi_accotto[arroba]speedy.com.ar
> Msn Messager:
>
> "Julio" escribió en el mensaje
> news:
> > Hola grupo
> >
> > Tengo la siguiente tabla
> >
> > Tabla A1
> >
> >
> > ClienteID fecha prueba
> >
> > 1 01/01/04 0.50
> > 1 01/02/04 0.25
> > 1 01/03/04 0.71
> > 2 01/01/04 0.3
> > 2 01/02/04 0.9
> > 2 01/03/04 0.6
> >
> > Como puedo hacer una vista que me devuelva las ultimas dos fechas por
> > clientes
> >
> >
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
Respuesta Responder a este mensaje
#4 Julio
27/08/2004 - 14:37 | Informe spam
Asi es la cantidad a retornar es fila. Lo que necesito es que me retorne
las ultimas 3 filas como esta en el ejemolo
"Maxi" wrote in message
news:
Hola, pero veamos una cosa: la cantidad a retornar es fija? siempre queres
las ultimas 3, las ultimas 4, como definis esto?


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



"Julio" escribió en el mensaje
news:
> Hola MAx, lo que necesito es que si un cliente tiene varios filas
insertada
> me devuelva las ultimas N filas que yo necesite agrupados por clientes,


es
> decir si el
> cliente 1 tiene cinco filas insertada y yo necesito las ultimas tres


filas
> que me la devuelva el select tanto para el cliente 1 como para todos.
>
>
>
> esto es un ejemplo de lo que tiene la tabla
>
> Clienteid fecha prueba
> 1 01/01/04 5
> 1 01/02/04 4
> 1 01/03/04 9
> 1 01/04/04 8
> 1 01/05/04 11
> 2 01/01/04 15
> 2 01/02/04 7
> 2 01/03/04 3
> 2 01/04/04 1
> 2 01/5/04 6
>
>
> Yo quiero hacer un select que me devuelva los ultimas tre filas que se
> insertaron
>
> el select me quedaria asi:
>
> Clienteid fecha prueba
> 1 01/03/04 9
> 1 01/04/04 8
> 1 01/05/04 11
> 2 01/03/04 3
> 2 01/04/04 1
> 2 01/05/04 6
>
>
>
>
>
>
>
>
>
>
>
>
>
> "MAXI" wrote in message
> news:%
> > Hola, si solo te importan las fechas y suponiendo que si hay empates
vale
> la
> > ultima, podrias aplicar algo asi como:
> >
> > CREATE TABLE #PEPE (ID INT, FECHA DATETIME)
> >
> > INSERT INTO #PEPE VALUES (1,GETDATE())
> > INSERT INTO #PEPE VALUES (1,GETDATE()+1)
> > INSERT INTO #PEPE VALUES (1,GETDATE()+2)
> > INSERT INTO #PEPE VALUES (2,GETDATE())
> >
> >
> > SELECT PEP1.ID, PEP1.FECHA AS ULTIMA, (SELECT MAX(FECHA) FROM #PEPE


PEP2
> > WHERE
> > PEP2.FECHA < PEP1.FECHA AND PEP1.ID = PEP2.ID) AS ANTEULTIMA
> >
> > FROM (select id,max(fecha) as fecha from #PEPE group by id)
> > PEP1
> >
> > > > >
> > Suerte
> >
> >
> >
> >
> > Maxi
> >
> > Buenos Aires - Argentina
> > Desarrollador .NET 3 Estrellas
> > Microsoft User Group (MUG)
> > Mail: Maxi_accotto[arroba]speedy.com.ar
> > Msn Messager:
> >
> > "Julio" escribió en el mensaje
> > news:
> > > Hola grupo
> > >
> > > Tengo la siguiente tabla
> > >
> > > Tabla A1
> > >
> > >
> > > ClienteID fecha prueba
> > >
> > > 1 01/01/04 0.50
> > > 1 01/02/04 0.25
> > > 1 01/03/04 0.71
> > > 2 01/01/04 0.3
> > > 2 01/02/04 0.9
> > > 2 01/03/04 0.6
> > >
> > > Como puedo hacer una vista que me devuelva las ultimas dos fechas


por
> > > clientes
> > >
> > >
> >
> >
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004


Respuesta Responder a este mensaje
#5 Maxi
27/08/2004 - 14:59 | Informe spam
ok, veamos entonces si este Query te gusta


CREATE TABLE #PEPE (ID INT, FECHA DATETIME)

INSERT INTO #PEPE VALUES (1,GETDATE())
INSERT INTO #PEPE VALUES (1,GETDATE()+1)
INSERT INTO #PEPE VALUES (1,GETDATE()+2)
INSERT INTO #PEPE VALUES (1,GETDATE()+3)
INSERT INTO #PEPE VALUES (1,GETDATE()+4)
INSERT INTO #PEPE VALUES (2,GETDATE())
INSERT INTO #PEPE VALUES (2,GETDATE()+10)
INSERT INTO #PEPE VALUES (2,GETDATE()+20)
INSERT INTO #PEPE VALUES (2,GETDATE()+30)

SELECT (SELECT COUNT(*) FROM #PEPE PEP2 WHERE PEP2.ID=PEP1.ID AND PEP2.FECHA
= PEP1.FECHA ),


PEP1.ID,
PEP1.FECHA
FROM #PEPE PEP1 WHERE
(SELECT COUNT(*) FROM #PEPE PEP2 WHERE PEP2.ID=PEP1.ID AND PEP2.FECHA >PEP1.FECHA )
<=3
ORDER BY ID,FECHA DESC


=
pd: si tienes muchos registros se puede poner lento por el tema de la
subconsulta :(

Un abrazo


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



"Julio" escribió en el mensaje
news:
Asi es la cantidad a retornar es fila. Lo que necesito es que me retorne
las ultimas 3 filas como esta en el ejemolo
"Maxi" wrote in message
news:
> Hola, pero veamos una cosa: la cantidad a retornar es fija? siempre


queres
> las ultimas 3, las ultimas 4, como definis esto?
>
>
> 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
>
>
>
> "Julio" escribió en el mensaje
> news:
> > Hola MAx, lo que necesito es que si un cliente tiene varios filas
> insertada
> > me devuelva las ultimas N filas que yo necesite agrupados por


clientes,
es
> > decir si el
> > cliente 1 tiene cinco filas insertada y yo necesito las ultimas tres
filas
> > que me la devuelva el select tanto para el cliente 1 como para todos.
> >
> >
> >
> > esto es un ejemplo de lo que tiene la tabla
> >
> > Clienteid fecha prueba
> > 1 01/01/04 5
> > 1 01/02/04 4
> > 1 01/03/04 9
> > 1 01/04/04 8
> > 1 01/05/04 11
> > 2 01/01/04 15
> > 2 01/02/04 7
> > 2 01/03/04 3
> > 2 01/04/04 1
> > 2 01/5/04 6
> >
> >
> > Yo quiero hacer un select que me devuelva los ultimas tre filas que se
> > insertaron
> >
> > el select me quedaria asi:
> >
> > Clienteid fecha prueba
> > 1 01/03/04 9
> > 1 01/04/04 8
> > 1 01/05/04 11
> > 2 01/03/04 3
> > 2 01/04/04 1
> > 2 01/05/04 6
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > "MAXI" wrote in message
> > news:%
> > > Hola, si solo te importan las fechas y suponiendo que si hay empates
> vale
> > la
> > > ultima, podrias aplicar algo asi como:
> > >
> > > CREATE TABLE #PEPE (ID INT, FECHA DATETIME)
> > >
> > > INSERT INTO #PEPE VALUES (1,GETDATE())
> > > INSERT INTO #PEPE VALUES (1,GETDATE()+1)
> > > INSERT INTO #PEPE VALUES (1,GETDATE()+2)
> > > INSERT INTO #PEPE VALUES (2,GETDATE())
> > >
> > >
> > > SELECT PEP1.ID, PEP1.FECHA AS ULTIMA, (SELECT MAX(FECHA) FROM #PEPE
PEP2
> > > WHERE
> > > PEP2.FECHA < PEP1.FECHA AND PEP1.ID = PEP2.ID) AS ANTEULTIMA
> > >
> > > FROM (select id,max(fecha) as fecha from #PEPE group by id)
> > > PEP1
> > >
> > > > > > >
> > > Suerte
> > >
> > >
> > >
> > >
> > > Maxi
> > >
> > > Buenos Aires - Argentina
> > > Desarrollador .NET 3 Estrellas
> > > Microsoft User Group (MUG)
> > > Mail: Maxi_accotto[arroba]speedy.com.ar
> > > Msn Messager:
> > >
> > > "Julio" escribió en el mensaje
> > > news:
> > > > Hola grupo
> > > >
> > > > Tengo la siguiente tabla
> > > >
> > > > Tabla A1
> > > >
> > > >
> > > > ClienteID fecha prueba
> > > >
> > > > 1 01/01/04 0.50
> > > > 1 01/02/04 0.25
> > > > 1 01/03/04 0.71
> > > > 2 01/01/04 0.3
> > > > 2 01/02/04 0.9
> > > > 2 01/03/04 0.6
> > > >
> > > > Como puedo hacer una vista que me devuelva las ultimas dos fechas
por
> > > > clientes
> > > >
> > > >
> > >
> > >
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.740 / Virus Database: 494 - Release Date: 16/08/2004
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida