Запрос Oracle, который извлекает по одной строке на каждый _id

#sql #oracle

Вопрос:

У меня есть такой стол, как :

 ID  | Val |  Kind
----------------------
 1  |  a  |   2
 2  |  b  |   1
 3  |  c  |   4
 3  |  c  |   33
 

и мне нужно получить по одной строке на каждый идентификатор в Oracle SQL.
есть какие-нибудь идеи?

Комментарии:

1. В ваших данных есть только одна строка на каждую id , поэтому вопрос неясен.

2. Возможно, ОП намеревался запросить по одной записи на вид, основываясь на некоторой логике (также не приведенной).

3. Спасибо @Gordon, я обновил данные сейчас .

4. Как вы думаете, зачем вам нужна хранимая процедура?

5. PL/SQL-это язык программирования. Вы действительно имеете в виду «извлечение» «с помощью PLSQL» или вам просто нужна select инструкция Oracle SQL?

Ответ №1:

Вы можете использовать row_number() для перечисления строк. Для произвольной строки:

 select t.*
from (select t.*,
             row_number() over (partition by id order by id) as seqnum
      from t
     ) t
where seqnum = 1;
 

Однако, как я указываю в комментарии, это необязательно, основываясь на данных, приведенных в вашем вопросе. Буквы id s уже уникальны.