con los siguientes datosDatos de grupo por el cambio de la agrupación de valor de la columna con el fin
create table #ph (product int, [date] date, price int)
insert into #ph select 1, '20120101', 1
insert into #ph select 1, '20120102', 1
insert into #ph select 1, '20120103', 1
insert into #ph select 1, '20120104', 1
insert into #ph select 1, '20120105', 2
insert into #ph select 1, '20120106', 2
insert into #ph select 1, '20120107', 2
insert into #ph select 1, '20120108', 2
insert into #ph select 1, '20120109', 1
insert into #ph select 1, '20120110', 1
insert into #ph select 1, '20120111', 1
insert into #ph select 1, '20120112', 1
me gustaría para producir el siguiente resultado:
product | date_from | date_to | price
1 | 20120101 | 20120105 | 1
1 | 20120105 | 20120109 | 2
1 | 20120109 | 20120112 | 1
Si el grupo I por precio y mostrar la max y la fecha mínima, entonces recibiré lo siguiente, que no es lo que quiero (consulte el exceso de fechas).
product | date_from | date_to | price
1 | 20120101 | 20120112 | 1
1 | 20120105 | 20120108 | 2
Así que, esencialmente lo que estoy buscando que hacer es grupo por el cambio de ritmo en los datos basados en columnas grupo de productos y precios.
¿Cuál es la forma más limpia de lograr esto?
Esta es una instancia de lo que se conoce como el problema 'Gaps and Islands', fyi. – AakashM
@AakashM echará un vistazo a eso, traté de buscar pero no tenía una definición tan clara para el problema. Gracias – MrEdmundo
np. Tener una 'tabla de números' (en este caso, una 'tabla de fechas') ayudará inmensamente. – AakashM