Sin bucles o cursores, ¿Cómo se toma una lista de intervalos de fecha y convertirlos en una cadena de 1s y 0s tal que:rompecabezas SQL Interesante
- cada bit representa cada día de minutos (todas las fechas) a un máximo (todas las fechas)
- el bit es 1 si ese día cae dentro de cualquiera de los intervalos de fechas
- el bit es 0 si ese día no cae en cualquiera de los intervalos
So por ejemplo, si los intervalos son e:
- 1/1/2011 a 1/2/2011
- 1/4/2011 a 1/5/2011
A continuación, el SQL se escribe debe ser la salida 11011. Aquí está una secuencia de comandos de configuración que puede usar:
declare @TimeSpan table
(
start datetime
,finish datetime
)
-- this is a good data set, with overlapping and non-overlapping time spans
insert into @TimeSpan values ('02/02/2010', '02/02/2010')
insert into @TimeSpan values ('02/03/2010', '02/03/2010')
insert into @TimeSpan values ('02/04/2010', '02/05/2010')
insert into @TimeSpan values ('02/05/2010', '02/06/2010')
insert into @TimeSpan values ('02/07/2010', '02/09/2010')
insert into @TimeSpan values ('02/08/2010', '02/08/2010')
insert into @TimeSpan values ('02/08/2010', '02/10/2010')
insert into @TimeSpan values ('02/14/2010', '02/16/2010')
-- for this set of data, the output string would be 111111111000111
¿Tarea o entrevista? – JNK
¿Cuenta un CTE recursivo como un bucle? –
Suena como tarea –