consulta

30/08/2004 - 13:35 por Elena | Informe spam
Buenos días,
tengo que hacer una select que me obtenga un listado de años:
obtengo el min(anio) y a partir de ese tengo que listar todos hasta el año
actual, aunque no se encuentren en los registros de la tabla.
Es decir si tengo una tabla con dos registros: del año 1999 y 2002 me
debería devolver.
1999
2000
2001
2002
2003
2004


Gracias y un saludo

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
30/08/2004 - 14:46 | Informe spam
Hola:

Aunque no me ha quedado muy claro si es esto lo que buscas, para obtener una
relación de años de los que tienes filas en tu tabla:
SELECT DISTINCT YEAR(TuCampoFecha) FROM TuTabla

Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"Elena" escribió en el mensaje
news:
Buenos días,
tengo que hacer una select que me obtenga un listado de años:
obtengo el min(anio) y a partir de ese tengo que listar todos hasta el año
actual, aunque no se encuentren en los registros de la tabla.
Es decir si tengo una tabla con dos registros: del año 1999 y 2002 me
debería devolver.
1999
2000
2001
2002
2003
2004


Gracias y un saludo


Respuesta Responder a este mensaje
#2 Lázaro
30/08/2004 - 17:25 | Informe spam
Creo que con una select no vas a poder, quizás me equivoque, pero no me
suena ya que si lo he entendido bien, no todos los años tienen porque
aparecer en la tabla..

Sin embargo, si haces un procedimiento almacenado aunque sea algo más de
código si podrías, aunque no sé si estás en SQL Server o no, si fuera que sí
esto podría ser un ejemplo:

Imaginate que tu tabla con los datos de años fuera algo así:

create table datosaños(año int,valor int)

Con los siguientes datos
insert into datosaños values (1999,1500)
insert into datosaños values (2001,1500)

Podrías crear un procedimiento SQL con lo siguiente:

create proc DameDatosAños
as
begin

declare @añominimo int
declare @añoactual int
set @añominimo = (Select min(año) from datosaños)
set @añoactual = datepart(yyyy,getdate())

create table #tempaños(año int)
while @añominimo <= @añoactual
begin
insert into #tempaños values (@añominimo)
set @añominimo = @añominimo + 1
end

select w.año, isnull(valor,0)
from #tempaños w, datosaños d
where w.año *= d.año

drop table #tempaños
end

Salu2


"Elena" wrote in message
news:
Buenos días,
tengo que hacer una select que me obtenga un listado de años:
obtengo el min(anio) y a partir de ese tengo que listar todos hasta el año
actual, aunque no se encuentren en los registros de la tabla.
Es decir si tengo una tabla con dos registros: del año 1999 y 2002 me
debería devolver.
1999
2000
2001
2002
2003
2004


Gracias y un saludo


Respuesta Responder a este mensaje
#3 Salvador Ramos
31/08/2004 - 08:31 | Informe spam
Perdón, ayer no entendí el problema, te paso una solución:

DECLARE @AñoDesde AS INT
DECLARE @AñoHasta AS INT

SELECT @AñoDesde = YEAR(MIN(TuCampoFecha)) FROM TuTabla
SET @AñoHasta = YEAR(GETDATE())

WHILE (@AñoDesde <= @AñoHasta) BEGIN
PRINT @AñoDesde
SELECT @AñoDesde = @AñoDesde + 1
END


Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"Salvador Ramos" escribió en el
mensaje news:
Hola:

Aunque no me ha quedado muy claro si es esto lo que buscas, para obtener


una
relación de años de los que tienes filas en tu tabla:
SELECT DISTINCT YEAR(TuCampoFecha) FROM TuTabla

Un saludo
Salvador Ramos
Murcia - España
[MVP SQL Server]
www.helpdna.net

"Elena" escribió en el mensaje
news:
> Buenos días,
> tengo que hacer una select que me obtenga un listado de años:
> obtengo el min(anio) y a partir de ese tengo que listar todos hasta el


año
> actual, aunque no se encuentren en los registros de la tabla.
> Es decir si tengo una tabla con dos registros: del año 1999 y 2002 me
> debería devolver.
> 1999
> 2000
> 2001
> 2002
> 2003
> 2004
>
>
> Gracias y un saludo
>
>


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