Oracle에서 A,B 형식의 두 열 데이터를 검색하는 방법
오라클 데이터베이스에 두 개의 열이 있습니다.
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| A | 1 |
| A | 2 |
+---------+---------+
결과적으로 데이터를 얻는 것처럼 데이터를 폐기하고 싶습니다.
+---------+---------+
| Column1 | Column2 |
+---------+---------+
| A | 1,2 |
+---------+---------+
해결책을 제시해 주시기 바랍니다.
팀 홀은 오라클의 문자열 집계 기법에 대해 상당히 표준적인 목록을 가지고 있습니다.
사용하는 기술은 Oracle 버전과 순수 SQL 솔루션을 찾고 있는지 여부 등 여러 가지 요소에 따라 달라집니다.Oracle 11.2를 사용하는 경우 다음을 사용하는 것이 좋습니다.LISTAGG
SELECT column1, listagg( column2, ',' ) WITHIN GROUP( order by column2 )
FROM table_name
GROUP BY column1
이전 버전의 Oracle을 사용하는 경우 순수 SQL 솔루션이 필요하지 않다고 가정하면 일반적으로 사용자 정의 Aggregate 함수 접근 방식을 사용하는 것이 좋습니다.
위의 모든 답변이 맞으며 작은 문제를 해결하기 위해 한 가지 사례를 추가하고자 합니다.나같은 경우에는my_column1
활자는nvarchar2
하지만 텍스트는number
벨로우 코드가 작동하지 않고 공백만 표시합니다.
select group_id, listagg( t.my_column1 || '-' || to_char(t.doc_date,'dd.mm.yyyy') || ' ') within group(order by doc_date)
from my_table t
group by group_id
제가 이렇게 썼을 때 효과가 있어요.
select group_id, listagg( to_char(t.my_column1) || '-' || to_char(t.doc_date,'dd.mm.yyyy') || ' ') within group(order by doc_date)
from my_table t
group by group_id
제 피드백이 누군가의 시간을 절약할 수 있기를 바랍니다.
만약 10g을 가지고 있다면, 아래의 기능을 거쳐야 합니다.
CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val in number)
RETURN VARCHAR2
IS
return_text VARCHAR2(10000) := NULL;
BEGIN
FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
return_text := return_text || ',' || x.col2 ;
END LOOP;
RETURN LTRIM(return_text, ',');
END;
/
따라서 다음과 같은 작업을 수행할 수 있습니다.
select col1, get_comma_separated_value(col1) from table_name
oracle 11g이 있는 경우 listagg를 사용할 수 있습니다.
SELECT
col1,
LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1
mysql의 경우, 간단할 것입니다.
SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1
Oracle 버전 10에서는 다음과 같은 작업을 수행합니다.
SELECT column1, wm_concat( column2)
FROM table_name
GROUP BY column1
언급URL : https://stackoverflow.com/questions/12145379/how-to-retrieve-two-columns-data-in-a-b-format-in-oracle
'programing' 카테고리의 다른 글
inotify와 epoll의 차이 (0) | 2023.10.17 |
---|---|
윈도우즈 7 x64/VS2012에 컴파일이 필요한 노드 모듈을 설치할 수 없음 (0) | 2023.10.17 |
현재 실행 중인 코드에 대한 HMODULE을 얻으려면 어떻게 해야 합니까? (0) | 2023.10.17 |
POSIX가 CHAR_B를 의무화한 이유는 무엇입니까?IT==8? (0) | 2023.10.17 |
AngularJS에서 페이지에 iframe을 동적으로 삽입합니다. (0) | 2023.10.17 |