Выбор различных значений подстроки - PullRequest
2 голосов
/ 20 ноября 2011

У меня есть поле, похожее на MAC-адрес, в котором первая часть является идентификатором группы, а вторая часть является серийным номером.Мое поле буквенно-цифровое и 5 цифр в длину, а первые 3 - это идентификатор группы.

Мне нужен запрос, который дает мне все отличные идентификаторы группы и первый серийный номер лексикографически.Вот пример данных:

ID
-----
X4MCC
X4MEE
X4MFF
V21DD
8Z6BB
8Z6FF

Желаемый результат:

ID
-----
X4MCC
V21DD
8Z6BB

Я знаю, что могу сделать SELECT DISTINCT SUBSTRING(ID, 1, 3), но я не знаю, как получить первый лексикографически.*

Ответы [ 2 ]

3 голосов
/ 20 ноября 2011

Другой способ, который, похоже, имеет такую ​​же стоимость, как запрос на gbn :

SELECT MIN(id)
FROM your_table
GROUP BY SUBSTRING(id, 1, 3);
2 голосов
/ 20 ноября 2011
SELECT
   ID
FROM
   (
   SELECT
      ID,
      ROW_NUMBER() OVER (PARTITION BY SUBSTRING(ID, 1, 3) ORDER BY ID) AS rn
   FROM MyTable
   ) oops
WHERE
   rn = 1
...