2017-01-26 6 views
2

У меня есть запрос, который выглядит следующим образом:Oracle - группы Создания повторяющихся строк

select nvl(trim(a.code), 'Blanks') as Ward, count(b.apcasekey) as UNSP,  count(c.apcasekey) as GRAPH, 
count(d.apcasekey) as "ANI/PIG", 
(count(b.apcasekey) + count(c.apcasekey) + count(d.apcasekey)) as "TOTAL ACTIVE", 
count(a.apcasekey) as "TOTAL OPEN" from (etc...) 

group by a.code 
order by Ward 

Причина у меня есть nvl(trim(a.code), 'Blanks') as Ward, что иногда a.code является пустой строкой, иногда это null.

Проблема заключается в том, что, когда я использую Group By заявление, я не могу использовать Ward или я получаю ошибку

Ward: Недопустимый идентификатор

я могу использовать только a.code так что я получаю 2 строки для 'Blanks', согласно ниже

1 Blanks 7 0 0 7 7 
2 Blanks 23 1 1 25 30 
3 W01  75 4 0 79 91 
4 W02  62 1 0 63 72 
5 W03  140 2 0 142 162 
6 W04  6 1 0 7 7 
7 W05  46 0 1 47 48 
8 W06  322 46 1 369 425 
9 W07  91 0 1 92 108 
10 W08  93 2 0 95 104 
11 W09  28 1 0 29 30 
12 W10  25 0 0 25 28 

Что мне нужно, это для строки с 'Blanks' для объединения в 1 ряд. Маленькая помощь?

Спасибо.

ответ

4

Вы не можете использовать псевдоним в GROUP BY, но вы можете использовать выражение, которое строит значение:

GROUP BY nvl(trim(a.code), 'Blanks') 
+0

Yup, который был прост и он работал. Спасибо, Алексей! –

+1

Когда ответ будет работать для вас, примите его; Я заметил, что вы никогда не принимали ответ на свои вопросы. [Здесь] (http://stackoverflow.com/help/someone-answers) вы найдете что-то еще, что делать, когда кто-то отвечает на вас. – Aleksej

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