Hola ros0809
Podrías hacerlo más o menos así:
Código SQL:
Ver originalDECLARE @Tbl_datos TABLE (id VARCHAR(2), nombre VARCHAR(15), dias INT, precio INT)
INSERT INTO @Tbl_datos VALUES ('01', 'madrid', 3, 20)
INSERT INTO @Tbl_datos VALUES ('01', 'madrid', 5, 25)
INSERT INTO @Tbl_datos VALUES ('01', 'madrid', 7, 30)
INSERT INTO @Tbl_datos VALUES ('01', 'madrid', 10, 35)
INSERT INTO @Tbl_datos VALUES ('02', 'barcelona', 3, 15)
INSERT INTO @Tbl_datos VALUES ('02', 'barcelona', 7, 19)
INSERT INTO @Tbl_datos VALUES ('02', 'barcelona', 12, 25)
INSERT INTO @Tbl_datos VALUES ('03', 'bilbao', 1, 7)
INSERT INTO @Tbl_datos VALUES ('03', 'bilbao', 4, 9)
INSERT INTO @Tbl_datos VALUES ('03', 'bilbao', 9, 10)
INSERT INTO @Tbl_datos VALUES ('04', 'sevilla', 4, 10)
INSERT INTO @Tbl_datos VALUES ('04', 'sevilla', 11, 20)
DECLARE @dias_buscados INT
SET @dias_buscados = 5
SELECT T1.* FROM @Tbl_datos T1 INNER JOIN
(SELECT id, MIN(dias - @dias_buscados) diferencia FROM @Tbl_datos WHERE dias >= @dias_buscados GROUP BY id) T2
ON T1.id = T2.id AND T1.dias = T2.diferencia + @dias_buscados
la idea de la cadena es obtener la menor diferencia para cada ciudad con respecto a los días buscados, de tal manera que si ejecutas sólo la subconsulta obtendrías una tabla como esta:
Código:
id diferencia
---- -----------
01 0
02 2
03 4
04 6
una diferencia = 0 quiere decir que para es id existe un registro igual al número de dias buscado, por lo tanto en la tabla debe existir un registro con dias = a diferencia + días buscados...
Dale un vistazo para ver si te sirve y si encuentro alguna forma más fácil de llegar al resultado lo posteo por la tarde.
Saludos
Leo.