2016-02-10 4 views
1

У меня есть таблица, какКак получить уникальное значение после удаления пространства и группы по какому-то другому столбцу в Postgres

id type note 
1 A ab cd 
1 B cdef 
1 A abd 
1 A abcd 

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

id type note 
1 A ab cd 
1 A abd 
1 B cdef 

, потому что после удаления пространства AB CD и абвг будет такой же. Я использую Postgres. Обратите внимание, что столбец id не уникален.

ответ

2

Это классический максимум групповым, но вы просто группа его на выражение не колонке

SELECT id, type, note FROM 
    (SELECT DISTINCT ON(replace(note,' ','')) 
    id 
    ,type 
    ,note 
    FROM table1 
    ORDER BY replace(note,' ','') 
) AS q 

sqlfiddle

+0

его возвращает только уникальное значение ... на основе идентификатора, типа .. а не несколько записей. –

+0

Он работает точно так же, как в примере (см. Скрипку). Если это не работает, как вы хотели, пожалуйста, уточните вопрос. –

+0

Сено работает. У меня был другой набор данных, которые меня путают .. Это работает: +1 –

0

Так как вы по всей видимости, с помощью Rails (в соответствии с вашими тегами), вы можете также использовать ActiveRecord чтобы получить все ваши уникальные экземпляры note, игнорируя пробелы:

WhateverModel.pluck("REPLACE(note, ' ', '')").uniq