[SQL] SQL Server의 동적 피벗 열
SQLSQL Server의 동적 피벗 열
나는 SQL 서버의 열을 다음과 같이 재산권라는 이름의 테이블이 있습니다 :
Id Name
다른 테이블에서 특정 객체가 그것에 가치를 부여해야한다고이 테이블의 일부 특성이있다.
Id Object_Id Property_Id Value
나는 내가 1'st 테이블에 선언 한 각 속성에 대해 하나의 열이 아래처럼 피벗 테이블을 만들고 싶어 :
Object_Id Property1 Property2 Property3 ...
나는 테이블에서 동적으로 피벗의 열을 얻을 수있는 방법을 알고 싶어요. 1'st 테이블의 행이 변경됩니다 때문입니다.
해결법
-
==============================
1.이 같은:
이 같은:
DECLARE @cols AS NVARCHAR(MAX); DECLARE @query AS NVARCHAR(MAX); select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Name) FROM property FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') , 1, 1, ''); SELECT @query = 'SELECT * FROM ( SELECT o.object_id, p.Name, o.value FROM propertyObjects AS o INNER JOIN property AS p ON o.Property_Id = p.Id ) AS t PIVOT ( MAX(value) FOR Name IN( ' + @cols + ' )' + ' ) AS p ; '; execute(@query);
이것은 당신이 뭔가를 줄 것이다 :
| OBJECT_ID | PROPERTY1 | PROPERTY2 | PROPERTY3 | PROPERTY4 | ------------------------------------------------------------- | 1 | ee | fd | fdf | ewre | | 2 | dsd | sss | dfew | dff |
from https://stackoverflow.com/questions/14797691/dynamic-pivot-columns-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] PostgreSQL의 "열이 존재하지 않습니다"하지만 실제로 수행 (0) | 2020.03.27 |
---|---|
[SQL] Access에서 케이스 식 (0) | 2020.03.27 |
[SQL] MySQL을위한 이전에 상응하여 연결 (0) | 2020.03.27 |
[SQL] LINQ case 문 (0) | 2020.03.27 |
[SQL] DB2 쉼표 그룹에 의해 출력을 분리 (0) | 2020.03.27 |