![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
![]()
Доброго дня всем.
Даны два столбца (выбираются запросом). В первом даты по возрастанию. второй характеризует високосность года. 1 28.07.2010 365 2 30.09.2010 365 3 30.12.2010 365 4 30.03.2011 365 5 30.06.2011 365 6 30.09.2011 365 7 30.12.2011 365 8 30.03.2012 366 9 02.07.2012 366 10 01.10.2012 366 11 31.12.2012 366 12 01.04.2013 365 13 01.07.2013 365 Необходимо при смене года с обычного на високосный и наоборот добавлять запись: 31.12.<нужный год> <кол-во дней в году>, так же в запросе. например между 7 и 8 записью должна появится 31.12.2011 365 Буду признательна за помощь.
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
![]() |
![]() |
![]() |
#2 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
субд?
а что делать в вашем случае для записи №11 - она на месте, но по условию Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
![]()
извините, забыла указать.oracle.
между 11 и 12 строк добавлять не нужно.
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
к слову, это обязательно надо в SQL запросе сделать?
а процедура на PL/SQL не пойдёт? или, можно это вообще на клиенте сделать... (если он есть, конечно ![]() |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
![]()
обязательно в запросе.
есть предположение сделать все юнионами. например к выборке всех дат добавить сначала юнион где есть переход с 365 на 366. там где все 365 заменить дату на 31.12, затем добавить юнион с 366 на 365 и изменить значение. затем отсортировать все это дело по дате. но как в where сравнить две соседние даты большой для меня вопрос) Код:
Здесь я пыталась использовать union all Также есть идея с использованием union. К выборке всех дат добавить юнион и там уже в селекте проверять даты где есть переход и заменять case? дублирующиеся строки уберутся union- ом. Но это пока в теории, возможно встретится еще какое препятствие ![]()
Никому не поставить нас на колени! Мы лежали и будем лежать!
Последний раз редактировалось Rekky; 29.07.2010 в 10:16. |
![]() |
![]() |
![]() |
#6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
![]()
Так вот lead в where использовать нельзя..ну я решила воспользоваться вторым способом, где использовать в селект можно.
Код:
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
![]() |
![]() |
![]() |
#8 | ||
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
чота даже обкатать идеи не на чем в данный момент
идея №1 добавляем поле Код:
потом сверху на это поле прикручиваем кейс, в котором ищем переход 366 -> 365 и 365 -> 366 полкчаем такое (с учетом проверки на существование такой даты в наборе данных - внутренний кейс) Код:
Код:
идея №2 раз все знают правила определения високосного года Цитата:
апд еще раз пеерчитал свою писанину и понял что lag() везде меняем на lead() и все будет работать 2 Rekky неявное приведение даты в строку может оказаться бомбой замедленного действия Цитата:
проверил пример после замены лаг на лид - все работает как надо Код:
Последний раз редактировалось soleil@mmc; 29.07.2010 в 12:36. |
||
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
![]()
Да проверила по таблицам, все отлично работает, спасибо, ваш вариант пожалуй лучше
![]() P.S. пыталась добавить вам отзыв, но не позволили ![]() ![]()
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
![]() |
![]() |
![]() |
#10 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод ошибки при условии.... | Arinka | Помощь студентам | 8 | 05.06.2010 14:54 |
Добавление записи в реестр при открытии книги | ru3000 | Microsoft Office Excel | 3 | 29.07.2009 04:49 |
Добавление записи через список в связанную таблицу(при связи с Access) | megaten | БД в Delphi | 5 | 17.05.2009 15:57 |
Разметка страницы при условии | axaptaalex | Microsoft Office Excel | 2 | 20.03.2009 18:36 |
DBGridEh+EditMask при условии. | Jenya | БД в Delphi | 1 | 03.03.2008 13:58 |