добавить запятую (,) в Oracle - PullRequest
       17

добавить запятую (,) в Oracle

3 голосов
/ 11 ноября 2010

С учетом этого запроса:

select distinct subject_key
from mytable

Результат:

subject_key
-----------
90896959
90895823
90690171
90669265
90671321

Как мне написать запрос в Oracle (используя серверную часть Aqua Data Studio Oracle 8i):

subject_key
-----------
90896959,
90895823,
90690171,
90669265,
90671321

СПАСИБО ВСЕМ!Должен ли я изменить выходной сигнал, а не вниз, как показано ниже.Как мне это написать, та же платформа.Спасибо.

subject_key
90896959,  90895823, 90690171,  90669265, 90671321

Ответы [ 2 ]

6 голосов
/ 11 ноября 2010

Oracle не имеет функции, подобной MySQL GROUP_CONCAT, которая является именно той функцией, которую вы запрашиваете. На этой странице представлены различные опции для такого агрегирования строк - одна из них - использовать пользовательскую функцию:

CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
  l_text  VARCHAR2(32767) := NULL;
BEGIN

  FOR cur_rec IN (SELECT subject_key 
                    FROM MYTABLE 
                   WHERE primary_key = IN_PK) LOOP
    l_text := l_text || ',' || cur_rec.ename;
  END LOOP;

  RETURN LTRIM(l_text, ',');
END;

Тогда вы бы использовали это как:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

... замена "?" со значением первичного ключа.

Ранее

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

SELECT DISTINCT TO_CHAR(subject_key) || ','
  FROM MYTABLE

Двойная труба - "||" - это Oracle [, PostgreSQL, а теперь и ANSI] средство объединения строк в SQL. Я использовал TO_CHAR для явного преобразования типа данных, но вы можете использовать:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

... если в этом нет необходимости.

0 голосов
/ 11 ноября 2010

наиболее вероятно: SELECT subject_key + ',' AS subject_key FROM mytable

По крайней мере, так в T-SQL.PL-SQL может немного отличаться.

...