У меня есть таблица вроде этого:Как выбрать идентификатор, first_not_null (value1), first_not_null (value2) .. на Postgresql
+--+---------+---------+
|id|str_value|int_value|
+--+---------+---------+
| 1| 'abc' | |
| 1| | 1 |
| 2| 'abcd' | |
| 2| | 2 |
+--+---------+---------+
Мне нужно, чтобы получить это:
+--+---------+---------+
|id|str_value|int_value|
+--+---------+---------+
| 1| 'abc' | 1 |
| 2| 'abcd' | 2 |
+--+---------+---------+
кажется мне нужно что-то вроде:
select id, first_not_null(str_value), first_not_null(int_value)
from table
group by id
Есть ли приемлемый способ для этого? Я использую Postgresql 9.0.1.
Update: это должно работать с UUID типов, а также
Если есть несколько ненулевых значений в ид, как бы вы определить, какой из них «первых»? –
Нет. В любом случае мне нужно «любое» ненулевое значение. На самом деле я пытаюсь получить все идентификаторы, у которых все значения заполнены. – Alex
Решение Zimi, скорее всего, будет правильным. –