[SQL] SQL 서버의 칼럼에서 변환 행 값 (PIVOT)
SQLSQL 서버의 칼럼에서 변환 행 값 (PIVOT)
나는 SQL Server의 테이블은 테스트 3 열을 가진 불렀다
| ITEM | ATTRIBUTE | VALUE |
-----------------------------
| item1 | Quality | A |
| item1 | color | Red |
| item2 | Quality | B |
| item2 | color | Black |
이 같은 출력을합니다 :
| ITEM | QUALITY | COLOR |
---------------------------
| item1 | A | Red |
| item2 | B | Black |
어떻게 SQL 서버에이를 얻을 수 있습니다.
해결법
-
==============================
1.이거 한번 해봐:
이거 한번 해봐:
SELECT * FROM (SELECT Item, attribute, value FROM MyTable) AS t PIVOT ( MAX(value) FOR attribute IN([Quality], [Color]) ) AS p;
산출:
╔═══════╦═════════╦═══════╗ ║ ITEM ║ QUALITY ║ COLOR ║ ╠═══════╬═════════╬═══════╣ ║ item1 ║ A ║ Red ║ ║ item2 ║ B ║ Black ║ ╚═══════╩═════════╩═══════╝
당신은 속성의 특정 값을 모르는 경우에도이 동적 쿼리를 사용할 수 있습니다 :
DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT distinct ',' + QUOTENAME(attribute) from MyTable FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT Item,' + @cols + ' from ( Select Item, attribute , value from MyTable ) dta pivot ( MAX(Value) for attribute in (' + @cols + ') ) pvt ' execute(@query);
-
==============================
2.이 PIVOT이 작동하지 않는 MySQL을위한 해키 솔루션의 비트입니다.
이 PIVOT이 작동하지 않는 MySQL을위한 해키 솔루션의 비트입니다.
select item, GROUP_CONCAT('',q) as Quantity, GROUP_CONCAT('',c) as Color from (select item ,CASE WHEN attribute = 'Quality' THEN value ELSE NULL END as q, CASE WHEN attribute = 'Color' THEN value ELSE NULL END as c from MyTable ) temp group by item
이 솔루션과 함께 문제는 속성 열의 모든 고유 값을 알아야한다는 것입니다.
당신은 여기를 시도 할 수 있습니다.
from https://stackoverflow.com/questions/16916470/convert-row-value-in-to-column-in-sql-server-pivot by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 조항에 해당하여 ORACLE 연결 (0) | 2020.07.09 |
---|---|
[SQL] 어떻게 SQL과 "이적 그룹"레이블을? (0) | 2020.07.09 |
[SQL] 지금 () 함수로부터 시간 빼기 (0) | 2020.07.08 |
[SQL] INT (10) 및 INT (12) 사이에 (내 코드에 적용되는 경우)의 차이점은 무엇입니까? (0) | 2020.07.08 |
[SQL] ORA-30926 : 테이블을 병합 할 때 소스 테이블의 행의 안정적인 세트를 얻을 수 없습니다 (0) | 2020.07.08 |