Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Продублировать данные средствами Query  [new]
sa_lll
Member

Откуда:
Сообщений: 3
Есть талтца с указаніми периодами и грубо говоря различными параметрами для данных периодов
27 ноя 09, 19:30    [7990148]     Ответить | Цитировать Сообщить модератору
 Re: Продублировать данные средствами Query  [new]
sa_lll
Member

Откуда:
Сообщений: 3
sa_lll
Есть таблица с указаніми периодами и грубо говоря различными параметрами для данных периодов

тоесть характеристика параметра и начальную и конечную дату периода на котором етот параметр действует
вот такого типа:
ID -/- Param -/- DateStart -/- DateEnd
1 - / - 05 - / - 01/01/2007 - / - 01/31/2007
2 - / - 10 - / - 02/01/2007 - / - 01/28/2007
3 - / - 20 - / - 03/01/2007 - / - 01/31/2007


А хотелось бы ее теперь увидеть в разбитом виде по каждой дате (для уже дальнейшей обработки)
что-то вроде етого: в одной таблице

ID - / - Param - / - Date
1 - / - 5 - / - 01/01/2007
2 - / - 5 - / - 02/01/2007
3 - / - 5 - / - 03/01/2007
.... .... ....
31 - / - 10 - / - 01/01/2007
32 - / - 10 - / - 02/01/2007
33 - / - 10 - / - 03/01/2007
.... .... ....
59 - / - 10 - / - 01/01/2007
60 - / - 10 - / - 02/01/2007
61 - / - 10 - / - 03/01/2007
.... .... ....


Может есть какие-то идей как ето реализовать???
27 ноя 09, 19:49    [7990228]     Ответить | Цитировать Сообщить модератору
 Re: Продублировать данные средствами Query  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
SELECT ROW_NUMBER()OVER(ORDER BY T1.Param, T2.[Date]) ID, T1.Param, T2.[Date]
FROM T T1 CROSS JOIN (SELECT DISTINCT DateStart FROM T) T2([Date])
ORDER BY 1;
27 ноя 09, 20:08    [7990308]     Ответить | Цитировать Сообщить модератору
 Re: Продублировать данные средствами Query  [new]
sa_lll
Member

Откуда:
Сообщений: 3
iap
SELECT ROW_NUMBER()OVER(ORDER BY T1.Param, T2.[Date]) ID, T1.Param, T2.[Date]
FROM T T1 CROSS JOIN (SELECT DISTINCT DateStart FROM T) T2([Date])
ORDER BY 1;

Ага.... но ето только если исходные периоды не перекрываются,
Я так понимаю, для варианта когда начало следующего диапазона является окончаием для предыдущего.
в примере я упростил, на самом же деле у меня диапазоны могут перекрыватся. и даже совпадать.
Rлючем который уникальный для каждой строчки етой исхожной таблицы служит только IDю Только он не повторяется, Даты в разнобой,
Тоесть нужно что-то более универсальное чтобы раскрыть детально по дням КАЖДЫЙ диапазон
27 ноя 09, 22:14    [7990580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить