|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.07.2010, 19:21 | #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 Буду признательна за помощь.
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
28.07.2010, 21:28 | #2 | |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
субд?
а что делать в вашем случае для записи №11 - она на месте, но по условию Цитата:
|
|
29.07.2010, 09:15 | #3 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
извините, забыла указать.oracle.
между 11 и 12 строк добавлять не нужно.
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
29.07.2010, 09:51 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
к слову, это обязательно надо в SQL запросе сделать?
а процедура на PL/SQL не пойдёт? или, можно это вообще на клиенте сделать... (если он есть, конечно ) |
29.07.2010, 10:10 | #5 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
обязательно в запросе.
есть предположение сделать все юнионами. например к выборке всех дат добавить сначала юнион где есть переход с 365 на 366. там где все 365 заменить дату на 31.12, затем добавить юнион с 366 на 365 и изменить значение. затем отсортировать все это дело по дате. но как в where сравнить две соседние даты большой для меня вопрос) Код:
Здесь я пыталась использовать union all Также есть идея с использованием union. К выборке всех дат добавить юнион и там уже в селекте проверять даты где есть переход и заменять case? дублирующиеся строки уберутся union- ом. Но это пока в теории, возможно встретится еще какое препятствие. к тому же это очень громоздко.
Никому не поставить нас на колени! Мы лежали и будем лежать!
Последний раз редактировалось Rekky; 29.07.2010 в 10:16. |
29.07.2010, 11:17 | #6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Цитата:
I'm learning to live...
|
||
29.07.2010, 11:29 | #7 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
Так вот lead в where использовать нельзя..ну я решила воспользоваться вторым способом, где использовать в селект можно.
Код:
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
29.07.2010, 11:52 | #8 | ||
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
чота даже обкатать идеи не на чем в данный момент
идея №1 добавляем поле Код:
потом сверху на это поле прикручиваем кейс, в котором ищем переход 366 -> 365 и 365 -> 366 полкчаем такое (с учетом проверки на существование такой даты в наборе данных - внутренний кейс) Код:
Код:
идея №2 раз все знают правила определения високосного года Цитата:
апд еще раз пеерчитал свою писанину и понял что lag() везде меняем на lead() и все будет работать 2 Rekky неявное приведение даты в строку может оказаться бомбой замедленного действия Цитата:
проверил пример после замены лаг на лид - все работает как надо Код:
Последний раз редактировалось soleil@mmc; 29.07.2010 в 12:36. |
||
29.07.2010, 13:03 | #9 |
Форумчанин
Регистрация: 14.01.2009
Сообщений: 312
|
Да проверила по таблицам, все отлично работает, спасибо, ваш вариант пожалуй лучше только вопрос для чего нужно условие 0 = 0 ?
P.S. пыталась добавить вам отзыв, но не позволили придется ограничится СПАСИБО
Никому не поставить нас на колени! Мы лежали и будем лежать!
|
29.07.2010, 13:39 | #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 |