powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как грамотно "перестроить" таблицу
14 сообщений из 14, страница 1 из 1
Как грамотно "перестроить" таблицу
    #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
Как грамотно "перестроить" таблицу
    #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
Как грамотно "перестроить" таблицу
    #32018077
Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pandre
Благодарю!
P.S. Чувствовал, что истина где-то в указанном Вами направлении....
...
Рейтинг: 0 / 0
Как грамотно "перестроить" таблицу
    #32018083
Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, а если разница между датами не обязательно 1 день, а произвольная?
Как указать , что по min(разница) нужно?
...
Рейтинг: 0 / 0
Как грамотно "перестроить" таблицу
    #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
Как грамотно "перестроить" таблицу
    #32018089
Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pandre
Спасибо!!!
:0)
...
Рейтинг: 0 / 0
Как грамотно "перестроить" таблицу
    #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
Как грамотно "перестроить" таблицу
    #32018091
Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Pandre.
Можно полюбопытствывать, какой у Вас стаж работы с SQL?
Просто хочу прикинуть, сколько мне еще пахать...
...
Рейтинг: 0 / 0
Как грамотно "перестроить" таблицу
    #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
Как грамотно "перестроить" таблицу
    #32018100
Timur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 SergSuper.
Вы правы!
Ваша наблюдательность меня окрылила (т.е. запрос я правильно написал),
а вот собственная "близорукость" огорчила.
Учиться, учиться и,еще раз, учиться как завещал великий Ленин! Ура!!!
Спасибо.
P.S. Как Вы мордочку смеющуюся ":0) вставили в текст?!!!


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


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