concat результат SQL-запроса с использованием разделителя полей

У меня есть запрос:

SELECT *  FROM (SELECT col1,col2,col3,ROWNUM R 
                FROM TBL WHERE  ROWNUM < 3) 
          WHERE R='2';

(rownum будет меняться каждый раз, давая только одну запись за раз)

column1      column2       column3
alpha         beta          gamma

Мне нужен результат как:

alpha,beta,gamma

Все, что мне нужно сделать, это разделители полей между выводом.

Это не относится к предложенной ссылке ниже и не является дубликатом!


person VRVigneshwara    schedule 09.07.2015    source источник
comment
посмотрите здесь   -  person m.cekiera    schedule 09.07.2015
comment
но я думаю, что LISTAGG возвращает результаты одного столбца, и этот вопрос имеет отдельные столбцы   -  person Ashish Patil    schedule 09.07.2015
comment
Нет, это не дубликат темы LISTAGG. OP запрашивает конкатенацию строк, а не агрегацию строк. Я снова открываю его.   -  person Lalit Kumar B    schedule 09.07.2015
comment
@LalitKumarB: ОП пометил это как дубликат, хотя ...   -  person Qantas 94 Heavy    schedule 09.07.2015
comment
@ Qantas94Heavy Это странно, потому что OP пометил мой ответ как отвеченный, а затем принял тему как дубликат совершенно другой темы. Я понимаю, почему робот-пользователь пометил его как дубликат.   -  person Lalit Kumar B    schedule 09.07.2015
comment
Можно ли поменять обратно?   -  person VRVigneshwara    schedule 10.07.2015


Ответы (3)


Есть два способа:

Функция CONCAT

SELECT *
FROM
  (SELECT concat(concat(concat(concat('a', ','), col2), ','), col3),
    ROWNUM R
  FROM TBL
  WHERE ROWNUM < 3
  )
WHERE R=2;

|| оператор конкатенации

SELECT *
FROM
  (SELECT col1||','||col2||','||col3,ROWNUM R FROM TBL WHERE ROWNUM < 3
  )
WHERE R=2;

Другое дело, не нужно использовать одинарные кавычки вокруг значения ROWNUM, это без необходимости преобразует его в string, просто оставьте его как NUMBER.

person Lalit Kumar B    schedule 09.07.2015

Если LISTAGG не то, что вы ищете, DUMMYCOL может помочь.--

   SELECT *
FROM
  (SELECT col1,
    ','AS DUMMYCOL,
    col2,
    ','AS DUMMYCOL,
    col3,
    ROWNUM R
  FROM TBL
  WHERE ROWNUM < 3
  )
WHERE R='2';
person Ashish Patil    schedule 09.07.2015

Вы можете использовать следующее: -

SELECT *  
FROM (SELECT col1||','||col2||','||col3,ROWNUM R 
      FROM TBL WHERE  ROWNUM < 3) 
WHERE R='2';
person Ankit Bajpai    schedule 09.07.2015