[SQL] 어떻게 SQL에서 같은 ID로 여러 행을 연결하는?
SQL어떻게 SQL에서 같은 ID로 여러 행을 연결하는?
내 표는 두 개의 필드와 같은 세부 사항을 포함 :
ID DisplayName
1 Editor
1 Reviewer
7 EIC
7 Editor
7 Reviewer
7 Editor
19 EIC
19 Editor
19 Reviewer
나는 표시 이름과 고유 정보를 얻을 원하는처럼
1 편집기 Revi 물병 7 EIC, 편집기 Revi 물병
ID 7 중복 값을하지 마세요
어떻게 표시 이름 정보를 결합하는 방법? 어떻게 쿼리를 작성하는?
해결법
-
==============================
1.SQL-서버에서는 다음에 그것을 할 수 있습니다 :
SQL-서버에서는 다음에 그것을 할 수 있습니다 :
질문
SELECT id, displayname = STUFF((SELECT DISTINCT ', ' + displayname FROM #t b WHERE b.id = a.id FOR XML PATH('')), 1, 2, '') FROM #t a GROUP BY id
TEST DATA
create table #t ( id int, displayname nvarchar(max) ) insert into #t values (1 ,'Editor') ,(1 ,'Reviewer') ,(7 ,'EIC') ,(7 ,'Editor') ,(7 ,'Reviewer') ,(7 ,'Editor') ,(19,'EIC') ,(19,'Editor') ,(19,'Reviewer')
산출
id displayname 1 Editor, Reviewer 7 Editor, EIC, Reviewer 19 Editor, EIC, Reviewer
-
==============================
2.
DECLARE @t TABLE ( ID INT, DisplayName VARCHAR(50) ) INSERT INTO @t (ID, DisplayName) VALUES (1 , 'Editor'), (1 , 'Reviewer'), (7 , 'EIC'), (7 , 'Editor'), (7 , 'Reviewer'), (7 , 'Editor'), (19, 'EIC'), (19, 'Editor'), (19, 'Reviewer') SELECT *, STUFF(( SELECT DISTINCT ', ' + DisplayName FROM @t WHERE ID = t.ID FOR XML PATH('')), 1, 2, '') FROM ( SELECT DISTINCT ID FROM @t ) t
출력 -
----------- ------------------------ 1 Editor, Reviewer 7 Editor, EIC, Reviewer 19 Editor, EIC, Reviewer
문자열의 집합에 대한 내 게시물 :
http://www.codeproject.com/Articles/691102/String-Aggregation-in-the-World-of-SQL-Server
-
==============================
3.MySQL의 경우 : TABLENAME GROUP BY ID와 SELECT ID, GROUP_CONCAT (표시 이름)
MySQL의 경우 : TABLENAME GROUP BY ID와 SELECT ID, GROUP_CONCAT (표시 이름)
참조 : http://www.sqlines.com/mysql/functions/group_concat
-
==============================
4.및 Oracle 데이터베이스의 경우
및 Oracle 데이터베이스의 경우
select id, listagg(displayname, ',') within group (order by displayname) as names from test group by id
-
==============================
5.모두 감사합니다,
모두 감사합니다,
SELECT Distinct t1.ID, MAX(STUFF(t2.x_id,1,1,'')) AS DisplayName FROM Table t1 CROSS apply( SELECT Distinct ', ' + SUBSTRING(t2.DisplayName,1,2) FROM Table t2 WHERE t2.ID = t1.ID AND t2.DisplayName > '' FOR xml PATH('') ) AS t2 (x_id) GROUP BY t1.ID order by 1 GO
from https://stackoverflow.com/questions/35172956/how-to-concatenate-many-rows-with-same-id-in-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의 날짜 필드 만 월과 일 비교 (0) | 2020.05.23 |
---|---|
[SQL] 는 SQL select 문의 다른 부분의 실행 순서는 무엇입니까? (0) | 2020.05.23 |
[SQL] 저장 프로 시저에 데이터 테이블 전달 (0) | 2020.05.23 |
[SQL] MySQL의 중복 된 행 (중복 2 열을 사용하여 검출) (0) | 2020.05.23 |
[SQL] 어떻게 SQL 쿼리 결과 집합의 바이트 크기를 얻으려면? (0) | 2020.05.23 |