2013-10-08 5 views
1

У меня есть набор данных, который содержит много заказов, каждый из которых содержит элементы заказа. У меня есть логика ищет конкретный пункт заказа ..Группировка строк со значениями NULL

order_id status 
2933475 PAID \N 
2933475 PAID \N 
2933475 PAID VALUE 
2933475 PAID \N 

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

Я думал, что использование COALESCE() сделает это, но я все равно получаю NULL при группировке этого заказа.

ответ

1

В зависимости от структуры таблицы/запроса, что-то подобное может работать:

select 
    order_id, 
    max(case when status = 'VALUE' then status else NULL end) as status 
from table 
group by order_id 
+0

спасибо! не считал это, потому что я думал, что NULL не имеет значения для рассмотрения как максимум. Думаю, мне нужно снова нажать на книги! – Jonathan

+0

Нет проблем. NULL просто не используются в агрегатах - поэтому AVG из NULL, 1 и 2 составляет 1,5. Полезно иметь в виду! Убедитесь, что вы отметили это как правильный ответ, если он отвечает на ваш вопрос. Благодаря :) –

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