Запрос для получения количества дат

#sql #oracle9i

#sql #oracle9i

Вопрос:

Предположим, у меня есть 3 набора записей

 key1    start_date1     start_date2    start_date3
701 08-SEP-2009 08-DEC-2009    08-jan-2010
701 08-JUN-2013 08-SEP-2013    08-DEC-2013
701 08-MAR-2017 08-MAR-2018    31-DEC-1899
  

Итак, мне нужно получить количество измененных дат, большее, чем 14-apr-2011 .

т. е. для конкретного ключа 701 количество измененных дат равно 5

т.е. для 3-х наборов строк даты, превышающие 14-Apr-2011 , имеют 5 отсчетов.
Мне нужно получить вывод таблицы с двумя полями в виде

 Key1  changedcount
701      5
  

Пожалуйста, помогите мне в этом .. я пытался сделать это более 2 дней : (

Комментарии:

1. Как вы получаете количество 5 из приведенного выше набора результатов ..?

Ответ №1:

вы могли бы попробовать что-то вроде следующего :

 SELECT SUM(nb)
  FROM (SELECT COUNT(*) nb FROM your_table WHERE start_date1 > '14-Apr-2011'
        UNION ALL
        SELECT COUNT(*) nb FROM your_table WHERE start_date2 > '14-Apr-2011'
        UNION ALL
        SELECT COUNT(*) nb FROM your_table WHERE start_date3 > '14-Apr-2011')
  

Ответ №2:

 SELECT
  key1,
  COUNT(CASE WHEN start_date1 > '14-Apr-2011' THEN 1 ELSE NULL END)  
  COUNT(CASE WHEN start_date2 > '14-Apr-2011' THEN 1 ELSE NULL END)  
  COUNT(CASE WHEN start_date3 > '14-Apr-2011' THEN 1 ELSE NULL END) AS changedcount
GROUP BY key1
FROM atable