[SQL] 어떻게 SQL 수평 데이터로 수직 데이터를 변환하는?
SQL어떻게 SQL 수평 데이터로 수직 데이터를 변환하는?
그래서 같은 관련 항목의 번호와 테이블 "항목"이 :
ID Rel_ID Name RelRank
--- ------ ---- -------
1 1 foo 1
2 1 bar 2
3 1 zam 3
4 2 foo2 1
저도 같은 Rel_ID와 항목과 같이, 같은 행에 나타납니다 있도록 쿼리를 얻으려고 :
Rel_ID Name1 Name2 Name3
------ ----- ----- -----
1 foo bar zam
2 foo2
나는 테이블에 여러 번 선택 시도했다 :
SELECT k.Rel_ID, k.name 'Name1', k2.name 'Name2'
FROM item k, item k2
WHERE k.Rel_ID = k2.Rel_ID
하지만이 실패합니다. 확실히 대폭 과정을 단순화 할 수있는 변환 또는 쿼리가, 그리고 내가 전에 이런 식으로 SQL을 사용하지 않았기 때문에 난 그냥 누락하고 있습니다. 나는 무엇을 놓치고?
[편집 : 추가 RelRank 열, 않습니다 내 데이터에 표시]
해결법
-
==============================
1.에 관계없이 사용중인 데이터베이스의, 당신이 달성하려고하는 일의 개념은 "피벗 테이블"라고합니다.
에 관계없이 사용중인 데이터베이스의, 당신이 달성하려고하는 일의 개념은 "피벗 테이블"라고합니다.
다음은 MySQL을위한 예입니다 : http://en.wikibooks.org/wiki/MySQL/Pivot_table
일부 데이터베이스는 그것을 위해 기능이 내장되어, 아래의 링크를 참조하십시오.
의 SQLServer : http://msdn.microsoft.com/de-de/library/ms177410.aspx
신탁: http://www.dba-oracle.com/t_pivot_examples.htm
당신은 항상 손으로 피벗을 만들 수 있습니다. 그냥 결과 집합의 모든 집계를 선택하고 그 결과 세트에서 선택합니다. 참고, 귀하의 경우, 당신은 CONCAT를 사용하여 하나 개의 컬럼에 모두 이름을 넣을 수 있습니다 (나는 생각 MySQL의에서의 GROUP_CONCAT), 당신은 A A rel_id 관련이 얼마나 많은 이름 모를 수 있기 때문이다.
(내가 mysql을 모르는) 귀하의 경우에 의사 선택 :
select rel_id, group_concat(name) from item group by rel_id
-
==============================
2.난 당신이 MySQL의 특정 응답을 찾고있다 생각합니다. 구문이 다른 데이터 저장소마다 다를 수 있다는 점을 유의하시기 바랍니다.
난 당신이 MySQL의 특정 응답을 찾고있다 생각합니다. 구문이 다른 데이터 저장소마다 다를 수 있다는 점을 유의하시기 바랍니다.
MySQL은이 쉽게 기능이 있습니다.
SELECT Rel_ID, GROUP_CONCAT(Name SEPARATOR ' ') As Names FROM Item GROUP BY Rel_ID;
그 작동합니다 :-)
-
==============================
3.당신이 목록에있는 이름이 정적 경우, 내 아래 쿼리는 내가 sqlfiddle 의지 작업을 성공적으로 실행하는 것이
당신이 목록에있는 이름이 정적 경우, 내 아래 쿼리는 내가 sqlfiddle 의지 작업을 성공적으로 실행하는 것이
SELECT rel_id, MAX (DECODE (rel_id, '1', DECODE (relrank, '1', name) , '2',DECODE (relrank, '1', name))) NAME1, MAX (DECODE (rel_id, '1', DECODE (relrank, '2', name))) NAME2, MAX (DECODE (rel_id, '1', DECODE (relrank, '3', name))) NAME3 FROM supportContacts GROUP BY rel_id
을 heres SQL 바이올린
http://sqlfiddle.com/#!4/480e2/11
from https://stackoverflow.com/questions/4071811/how-to-transform-vertical-data-into-horizontal-data-with-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 무엇 외래 키 불일치 오류를 일으키는? (0) | 2020.05.26 |
---|---|
[SQL] 항상합니까 '선택'프라이 머리 키를 기준으로 순서? (0) | 2020.05.26 |
[SQL] 어떻게 SQLite는 지난 삽입 ID를 얻으려면? (0) | 2020.05.26 |
[SQL] SQL 방법은 하나의 공백으로 반복 공백을 대체 (0) | 2020.05.26 |
[SQL] 어떻게 CASCADE DELETE를 가능하게하기 위해 테이블을 수정합니까? (0) | 2020.05.26 |