Расширение SQL-запроса для включения записей за пределы указанной даты - PullRequest
0 голосов
/ 29 июня 2009

У меня запрос ограничен диапазоном дат:

select * from mytable 
where COMPLETIONDATE >= TO_DATE('29/06/08','DD/MM/YY')    
and COMPLETIONDATE <= TO_DATE('29/06/09','DD/MM/YY')     

Таблица представляет собой журнал действий для системы заявок. Содержание может быть что-то вроде:

ticket_id|activity|completiondate
 1    1       some
 1    2       some
 1    3       some
 1    4       some

 2    1       some
 2    2       some
 2    3       some
 2    4       some

Таким образом, я знаю, когда каждое действие было завершено.

Мои проблемы в том случае, если completiondate первого действия происходит «до» диапазона дат, когда я теряю эту информацию:

где дата завершения> = 1 июля 09 и дата завершения <= 30 июля 09 </strong>

ticket_id |activity|completiondate
123    3        1 jul 09
123    4        2 jul 09

В этом случае я потерял даты для действий 1 и 2, которые имели место 30 июня или ранее.

Как я могу одновременно ограничить диапазон дат предметов, которые я хочу показать, но также включить даты из тех же билетов за пределами диапазона дат?

Это для отчета о билетах, поэтому я должен увидеть:

Tickets from jun 1 - 30 : 

Page won't load, received: march 20, fixed: jun 15
Change color, received: jun 5, fixed:  in progress... 

и т.д..

Ответы [ 3 ]

3 голосов
/ 29 июня 2009

Вам нужно написать подзапрос, который получает все идентификаторы с датой завершения внутри вашего диапазона, а затем подключить его к запросу, который возвращает всю информацию о билетах для этих идентификаторов.

select * 
from mytable
where id in (select id from mytable where 
              COMPLETIONDATE >= TO_DATE('29/06/08','DD/MM/YY')    
              COMPLETIONDATE <= TO_DATE('29/06/09','DD/MM/YY')
)
1 голос
/ 29 июня 2009

Таким образом, вы хотите, чтобы все записи, по крайней мере, одно действие произошло в период:

SELECT * 
    FROM mytable 
    WHERE id IN (
       SELECT id 
       FROM mystable 
       WHERE COMPLETIONDATE BETWEEN ... AND ...);
0 голосов
/ 29 июня 2009

Используйте вложенный выбор, чтобы получить список идентификаторов билетов для отображения, отфильтровав вложенный выбор по диапазону дат, тогда внешний запрос будет отфильтрован по идентификаторам билетов, возвращенным вложенным выбором, а не по диапазону дат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...