Чёт я туплю, нужен help =)
Есть таблица с полем для группировки. Нужно вывести все записи сгруппированные по этому полю (g), вот только не нужно группировать если оно NULL.
Ниже приведён пример для MySQL (всё хорошо).
Но, какой аналог в PostgreSQL?
Таблица:
+----+------+
| id | g |
+----+------+
| 1 | NULL |
| 2 | 2 |
| 3 | 2 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
| 7 | NULL |
| 8 | NULL |
+----+------+
MySQL Query:
SELECT *
FROM `test`
GROUP BY `g`, IF(`g` IS NULL, `id`, 0);
MySQL Result:
+----+------+
| id | g |
+----+------+
| 1 | NULL |
| 7 | NULL |
| 8 | NULL |
| 4 | 1 |
| 2 | 2 |
+----+------+
==========
PostgreSQL?
SELECT DISTINCT ON (g) g, id
FROM test;
Вот только как не группировать, когда g=NULL?
WHERE g IS DISTINCT FROM ...