| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > ХП в FireBird 2.0 Диалект 3. Не прерывная дата |
| Автор: Desperate 9.11.2018, 09:50 |
| Всем привет. В работе с FireBird совсем зеленый Есть такая задача, есть таблица данных продаж, например вида : Дата продажи, Сумма 05.03.2013 | 1000 06.03.2013 | 500 06.03.2013 | 600 08.03.2013 | 2000 10.03.2013 | 300 Необходимо в результат агрегировать данные с помощью Sum(это понятно, элементарный запрос) вывести в таблицу вида 05.03.2013 | 1000 06.03.2013 | 1100 07.03.2013 | null 08.03.2013 | 2000 09.03.2013 | null 10.03.2013 | 300 т.е. создать диапазон дат и там где нет данных вывести null. как подобное можно реализовать с помощью ХП? Есть идея программно создавать таблицу с диапазонов и потом джоинить к ней таблицу данных левым(правым) соединением. затем удалять таблицу, но может есть способ проще, без использования таблиц? Спасибо. П.С.: Использую морду лица IBExpert |
| Автор: Akella 9.11.2018, 10:08 |
| SUM + группировка по дате? |
| Автор: Desperate 9.11.2018, 12:57 |
| Это понятно, но тогда результат будет такой: 05.03.2013 | 1000 06.03.2013 | 1100 08.03.2013 | 2000 10.03.2013 | 300 А нужно 05.03.2013 | 1000 06.03.2013 | 1100 07.03.2013 | null 08.03.2013 | 2000 09.03.2013 | null 10.03.2013 | 300 |
| Автор: Akina 9.11.2018, 13:10 | ||
Создаёте секвенс, который генерит целые от нуля до (макс. разность дат в днях минус 1). Используете его как дополнительную таблицу, и с помощью DATEADD генерите все даты диапазона. LEFT JOIN-ите к нему свою таблицу. Т.е. схематично типа
Ну а под свой диалект причёсывай сам... |