2015-06-08 4 views
1

Я пытаюсь запустить запрос для подсчета записей на основе метки времени из года в год. Вот запрос, который я в настоящее время:Колонка отображает каждый счет

SELECT plocation AS GROUP_NUMBER, count(DISTINCT UMEMBERID) AS YEAR_ONE 
    FROM HEALTH_ASSESSMENT 
    WHERE PUBLICATIONDT > '31-DEC-13'AND PUBLICATIONDT < '01-JAN-15' 
    GROUP BY PLOCATION 

Он считает, что именно мне нужно для того времени кадра и выводит следующее:

GROUP_NUMBER | YEAR_ONE 

G12345  |  141 
G12346  |  61 

Где YEAR_ONE это даты я перечислил, который по существу 2014. Есть ли способ создать дополнительный столбец, который учитывает второй временной интервал? Например, что-то вроде этого:

GROUP_NUMBER | YEAR_ONE  | YEAR_TWO 

G12345  |  141  |  92  
G12346  |  61  |  57 
G12444  | NULL OR BLANK |  16 

Здесь G12444 не может иметь каких-либо записей в YEAR_ONE параметров, но будет иметь записи в YEAR TWO параметров. Иногда этот запрос будет составлять от месяца к месяцу, поэтому, чтобы каждый столбец был настроен с параметрами 01-JAN-15 - 31-JAN-15, также может понадобиться.

Как это сделать?

+0

К сожалению, это оракул –

ответ

1

Вы должны иметь возможность сделать это с помощью оператора CASE. Нечто подобное должно работать:

SELECT plocation AS GROUP_NUMBER 
    , count(DISTINCT CASE WHEN EXTRACT(YEAR from PUBLICATIONDT) = 2014 THEN UMEMBERID ELSE null END) AS YEAR_ONE 
    , count(DISTINCT CASE WHEN EXTRACT(YEAR from PUBLICATIONDT) = 2015 THEN UMEMBERID ELSE null END) AS YEAR_two 
    FROM HEALTH_ASSESSMENT 
    WHERE EXTRACT(YEAR from PUBLICATIONDT) BETWEEN 2014 and 2015  
GROUP BY PLOCATION 
+0

Это должно быть '... И PUBLICATIONDT <'01-16''-январь, так как вы включили' случай, когда YEAR (PUBLICATIONDT) = 2015' в запросе , – RubahMalam

+0

Обновлен год в заявлении дела. – MartianCodeHound

+0

Как насчет 'PUBLICATIONDT> '31 -DEC-13''? Вы должны изменить предложение 'where'. Потому что он устранен за все годы, кроме 2014 года. – RubahMalam

Смежные вопросы