Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как грамотно "перестроить" таблицу / 14 сообщений из 14, страница 1 из 1
29.11.2001, 09:13
    #32018071
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Извиняюсь за назойливость!
Может кто подскажет как грамотно перестроить таблицу?
Есть таблица с полем, в котором храниться дата (ключевое).
Date
|10/10/2001|
|11/10/2001|
|12/10/2001|
|13/10/2001|
..........

Мне надо перестроить таблицу (может промежуточную создать) таким образом, чтобы
было две колонки: в одной дата, а в другой - ближайшая последующая к ней дата, т.е.
Date1______Date2
|10/10/2001| 11/10/2001
|11/10/2001| 12/10/2001
|12/10/2001| 13/10/2001
|13/10/2001| null
..........
Я сделал через WHERE v1.Date>v2.Date где v1,v2-одна и та же таблица
с последующей группировкой по дате и вычислением MIN(Date)
, но на 1000 записей
в промежуточном запросе порождается свыше 200.000 записей.
Ведь, в принципе "проще" это сделать "на бумаге":
взять таблицу, ее копию и копию сдвинуть вверх на одну строку,
тогда каждой дате левой таблицы будет соответствовать дата правой таблицы, где дата правой таблицы является следующей ближайшей датой для даты левой таблицы.
Извините за запутанность, но если кто разобрался в моих ломанных объяснениях и у кого есть соображения по этому поводу, прошу откликнуться.
Мне важен принцип, т.к. запрос я уже сделал (но он мне не нравится, не нравится сам механизм, которым я пользуюсь для выполнения, казалось бы пустякового преобразования)
...
Рейтинг: 0 / 0
29.11.2001, 09:38
    #32018076
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
select t1.date as date1, t2.date as date2 from
dtable t1 left outer join dtable t2 on
datediff(d, t1.date, t2.date)=1
...
Рейтинг: 0 / 0
29.11.2001, 09:42
    #32018077
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 Pandre
Благодарю!
P.S. Чувствовал, что истина где-то в указанном Вами направлении....
...
Рейтинг: 0 / 0
29.11.2001, 10:05
    #32018083
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Господа, а если разница между датами не обязательно 1 день, а произвольная?
Как указать , что по min(разница) нужно?
...
Рейтинг: 0 / 0
29.11.2001, 10:18
    #32018086
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
select t1.date as date1, t2.date as date2 from
dtable t1 left outer join dtable t2 on
t2.date=(select min(t3.date) from
dtable t3 where t1.date<t3.date) order by t1.date
...
Рейтинг: 0 / 0
29.11.2001, 10:35
    #32018089
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 Pandre
Спасибо!!!
:0)
...
Рейтинг: 0 / 0
29.11.2001, 10:40
    #32018090
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Так быстрее

select t1.date as date1, min(t2.date) as date2 from
dtable t1 left outer join dtable t2 on
t1.date<t2.date
group by t1.date
...
Рейтинг: 0 / 0
29.11.2001, 10:46
    #32018091
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 Pandre.
Можно полюбопытствывать, какой у Вас стаж работы с SQL?
Просто хочу прикинуть, сколько мне еще пахать...
...
Рейтинг: 0 / 0
29.11.2001, 11:32
    #32018095
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 Timur
Я сделал через WHERE v1.Date>v2.Date где v1,v2-одна и та же таблица
с последующей группировкой по дате и вычислением MIN(Date)
, но на 1000 записей

А что Вы под этим имели ввиду?
Разве это не тоже что и Pandre написал?

select t1.date as date1, min(t2.date) as date2 from
dtable t1 left outer join dtable t2 on
t1.date<t2.date
group by t1.date

Так что совсем немного осталось
...
Рейтинг: 0 / 0
29.11.2001, 12:26
    #32018100
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 SergSuper.
Вы правы!
Ваша наблюдательность меня окрылила (т.е. запрос я правильно написал),
а вот собственная "близорукость" огорчила.
Учиться, учиться и,еще раз, учиться как завещал великий Ленин! Ура!!!
Спасибо.
P.S. Как Вы мордочку смеющуюся ":0) вставили в текст?!!!


2 Pandre
Признателен за помощь, Ваш ответ зажег "лампочку" в моих мозгах.
Спасибо.
...
Рейтинг: 0 / 0
29.11.2001, 13:52
    #32018112
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
2 Timur
А вот до мордочек Вам еще пахать и пахать
...
Рейтинг: 0 / 0
29.11.2001, 14:35
    #32018120
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Я так не думаю...
...
Рейтинг: 0 / 0
29.11.2001, 14:50
    #32018125
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Интересно у меня получиться
...
Рейтинг: 0 / 0
29.11.2001, 15:02
    #32018127
Timur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как грамотно "перестроить" таблицу
Я так понял: с запросами все-таки сложнее, чем с вставкой картинок, верно?
Pandre, молодец!!!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как грамотно "перестроить" таблицу / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]