Сгруппировать данные по изменению значения столбца группировки по порядку

Со следующими данными

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

Я хотел бы получить следующий вывод:

product | date_from | date_to  | price
  1     | 20120101  | 20120105 |   1
  1     | 20120105  | 20120109 |   2
  1     | 20120109  | 20120112 |   1

Если я сгруппирую по цене и покажу максимальную и минимальную дату, то я получу следующее, чего я не хочу (см. наложение дат).

product | date_from | date_to  | price
  1     | 20120101  | 20120112 |   1
  1     | 20120105  | 20120108 |   2

Таким образом, по сути, то, что я хочу сделать, это сгруппировать по шагу изменения данных на основе группы столбцов продукта и цены.

Как это сделать проще всего?

15
задан Andriy M 28 April 2012 в 19:39
поделиться