Как отобразить результат запроса SQL в одном поле в ORACLE?

У вас есть следующая таблица под названием P_FAMILIA:

|ID |    NAME    | SOLDADOS   |
|---|------------|------------|
| 1 | Stark      |  30000     |
| 2 | Targaryen  |            |
| 3 | Lannister  |  15000     |
| 4 | Greyjoy    |            |

Когда вы делаете следующий запрос

SELECT F.NAME 
FROM P_FAMILIA F

, я получаю

|    NAME    |
|------------|
| Stark      |
| Targaryen  |
| Lannister  |
| Greyjoy    |

Я хочу показать результат запроса:

|            NAME                 |
|---------------------------------|
|Stark,Targaryen,Lannister,Greyjoy|

Обновление

Попробуйте загрузить схему на http://sqlfiddle.com/ , но Приложение представляет проблемы, когда двигатель "Oracle 11g R2"

выбран Схема:

-- Crear tabla
CREATE TABLE P_FAMILIA
(
ID INT,
NAME VARCHAR2(30 BYTE),
SOLDADOS FLOAT(126)
);

-- Llave primaria
ALTER TABLE P_FAMILIA
ADD PRIMARY KEY (ID);

    -- Insert Statements
Insert into P_FAMILIA
   (ID, NAME, SOLDADOS)
 Values
   (1, 'Stark', 30000);
Insert into P_FAMILIA
   (ID, NAME)
 Values
   (2, 'Targaryen');
Insert into P_FAMILIA
   (ID, NAME, SOLDADOS)
 Values
   (3, 'Lannister', 15000);
Insert into P_FAMILIA
   (ID, NAME)
 Values
   (4, 'Greyjoy');
COMMIT;

4
задан 29.03.2016, 18:01
4 ответа

Я понимаю, что из-за примера, который ввиду того, что то, что ты ищешь, это:

select listagg(A.NAME,',') WITHIN GROUP (ORDER BY A.ID) as NAME from P_FAMILIA A;

того, чтобы не быть asГ, - я прошу у тебя описывать в детали, в которой он не похож, которое ты просишь.

Конечно, LiveSQL из Oracle, если функционируй, если ты хочешь сделать доказательства и иметь.

4
ответ дан 24.11.2019, 14:41
  • 1
    Если señ or, это был результат, который он ждал. не знал ЛИВЕСКЛ де Оракле, достаточно ú til спасибо за имение. этот serí в схему и консультацию: livesql.oracle.com/apex/livesql/file/… – Goerman 16.09.2016, 00:03

Следующее deberГ, - чтобы функционировать:

SELECT WM_CONCAT(NAME) AS NAMECONCATS FROM P_FAMILIA GROUP BY NAME;
0
ответ дан 24.11.2019, 14:41
  • 1
    Спасибо Эктор, но он показывает мне результат той же формы... – Goerman 29.03.2016, 17:43

Хороший dГ - в,

, Чтобы мочь заставлять прилагать стоимость линий

, PodrГ-Схвати использовать одну funciГіn для того, чтобы он возвратил тебе группируемые данные или анонимный блок:

<br/>
set serveroutput on
<br/>
declare
<br/>
cursor c_name is select name from P_FAMILIA;
<br/>
name_2 varchar2(50);
<br/>
begin
<br/>
  name_2:='';
<br/>
  for x in c_name loop
<br/>
    if c_name%rowcount = 1 then
<br/>
     name_2:=name_2||' '||x.name;
<br/>
    else
<br/>
      name_2:=name_2||', '||x.name;
<br/>
    end if;
<br/>
  end loop;
<br/>
  dbms_output.put_line(name_2);  
<br/>
end;
<br/>
/
<br/>
<br/>

Или ты можешь использовать analГ-костариканские функции "LEAD" o "LAG"

select * from (
<br/>select name||' ,'||
<br/>**lag**(name,1) over (order by name)||' ,'||
<br/>**lag**(name,2) over (order by name) ||' ,'||
<br/>**lag**(name,3) over (order by name)
<br/>NAME_2  from P_FAMILIA
<br/>order by NAME_2 desc ) 
<br/>where rownum=1;

select * from (
<br/>select name||' ,'||
<br/>**lead**(name,1) over (order by name)||' ,'||
<br/>**lead**(name,2) over (order by name) ||' ,'||
<br/>**lead**(name,3) over (order by name)
<br/>NAME_2 from P_FAMILIA
<br/>order by NAME_2)
<br/>where rownum=1
0
ответ дан 24.11.2019, 14:41

Это, должно быть, функционирует (консультация примера):

select stragg(name) from emp;

MostrarГ - В:

Gonzalo, Juan, José

EDICIГ “N

ты Можешь тестировать это:

SELECT deptno, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
FROM   emp GROUP BY deptno;

Оказавшиеся

   DEPTNO EMPLOYEES

    10 CLARK,KING,MILLER
    20 ADAMS,FORD,JONES,SCOTT,SMITH
    30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
0
ответ дан 24.11.2019, 14:41
  • 1
    Привет, Спасибо, но у меня появляется следующая ошибка: ORA-00904: " STRAGG": идентификатор не vá lido, такой кажись stragg не está доступный для Oracle 11g – Goerman 29.03.2016, 21:50
  • 2
    Уже edité попытайся, если оно функционирует. – x4mp73r 29.03.2016, 22:09
  • 3
    Он не дает результат, который я ищу... – Goerman 29.03.2016, 22:27