powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогитеподалуйста с запросом с диапазонами дат.
4 сообщений из 4, страница 1 из 1
Помогитеподалуйста с запросом с диапазонами дат.
    #38508273
Fedor55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

Мне нужен запрос который возвращает таблицу с по порядку идущими датами (всего 180 дней от указного значения) и полем имеющим значение 1 - если дата попала хотя бы в один выбранный диапазон, и значение 0 - если дата не входит ни в один из диапазонов.

Пытаюсь сделать следующее:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
--получаю список необходимых дат
WITH a(a) AS (   VALUES  ( date('2013-12-12') - 180 days )
            UNION ALL                
            SELECT  a + 1 DAY
            FROM    a
            WHERE   a < date('2013-12-12')
),

-- получаю границы диапазонов дат (если даты окончанию в таблице нет беру указанное значение) 
c as  (     select STARTDATE,
                           case when ENDATE is null 
                           then Date('2013-12-12')
                           else ENDATE
                           end as ENDATE
            from    TABLE
),

select  a as myDAY,
          case when exists (
              select  1
              from     c
              where   a BETWEEN c.STARTDATE AND c.ENDATE  
         ) then 1 else 0 end as FLAG
FROM    a 



Какие то значения я получаю... Но от правды они видимо далеки. Кажется что проблема со вторым case.
Неделю бьюсь просветов нет. Буду благодарен за любую помощь)
...
Рейтинг: 0 / 0
Помогитеподалуйста с запросом с диапазонами дат.
    #38509811
приведи тестовый набор данных и желаемый результат на них.
...
Рейтинг: 0 / 0
Помогитеподалуйста с запросом с диапазонами дат.
    #38509940
m&m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m&m
Гость
Fedor55,

...

select a as myDAY,
case when a BETWEEN c.STARTDATE AND c.ENDATE then 1 else 0 end as FLAG
FROM a,c
order by 1
...
Рейтинг: 0 / 0
Помогитеподалуйста с запросом с диапазонами дат.
    #38538788
Fedor55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное за участие)
В итоге сделал так) Работает)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
WITH 
--список дней
a(a) AS (   VALUES  ( date('2013-12-12') - 180 days )
            UNION ALL                
            SELECT  a + 1 DAY
            FROM    a
            WHERE   a < date('2013-12-12')
),
--границы действующих просрочек 
c as  (     select   T.STARDATE,
                         CASE WHEN T.ENDDATE IS NULL 
                                 THEN date('2013-12-12')
                                 else ENDDATE
                         end as FACTDATE
from    TABLE
)
--дни с просрочками
select  a as myDAY,
        case when exists (
            select  1
            from    c  
            where   a <= c.STARDATE and a >= c.ENDDATE
        ) then 1 else 0 end as FLAG
FROM  a
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Помогитеподалуйста с запросом с диапазонами дат.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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