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 маркира отговора ми като отговорен и след това прие темата да бъде дубликат на напълно различна тема. Разбирам защо robo-user го маркира като дубликат.   -  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, това ненужно го преобразува в низ, просто го оставете като 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