[SQL] 집계 함수없이 SQL 서버에서 피벗 쿼리를 만드는 방법
SQL집계 함수없이 SQL 서버에서 피벗 쿼리를 만드는 방법
나는 MS SQL Server 2008을 사용하고 난 데이터를 다음 있습니다 :
select * from account;
| PERIOD | ACCOUNT | VALUE |
----------------------------
| 2000 | Asset | 205 |
| 2000 | Equity | 365 |
| 2000 | Profit | 524 |
| 2001 | Asset | 142 |
| 2001 | Equity | 214 |
| 2001 | Profit | 421 |
| 2002 | Asset | 421 |
| 2002 | Equity | 163 |
| 2002 | Profit | 325 |
나는 그들이이 될 수 있도록합니다 :
| ACCOUNT | 2000 | 2001 | 2002 |
--------------------------------
| Asset | 205 | 142 | 421 |
| Equity | 365 | 214 | 163 |
| Profit | 524 | 421 | 325 |
나는 쿼리를 사용 피벗 쿼리에 시도했지만 값이 집계 함수를 사용해야하고 결과는 적합하지 않습니다. 어떻게해야합니까?
해결법
-
==============================
1.
SELECT * FROM ( SELECT [Period], [Account], [Value] FROM TableName ) AS source PIVOT ( MAX([Value]) FOR [Period] IN ([2000], [2001], [2002]) ) as pvt
또 다른 방법,
SELECT ACCOUNT, MAX(CASE WHEN Period = '2000' THEN Value ELSE NULL END) [2000], MAX(CASE WHEN Period = '2001' THEN Value ELSE NULL END) [2001], MAX(CASE WHEN Period = '2002' THEN Value ELSE NULL END) [2002] FROM tableName GROUP BY Account
-
==============================
2.뿐만 아니라이 체크 아웃 : XML 경로 및 피벗을 사용하여
뿐만 아니라이 체크 아웃 : XML 경로 및 피벗을 사용하여
SQL 휘티 d 혀라도
| ACCOUNT | 2000 | 2001 | 2002 | -------------------------------- | Asset | 205 | 142 | 421 | | Equity | 365 | 214 | 163 | | Profit | 524 | 421 | 325 | DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.period) FROM demo c FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT account, ' + @cols + ' from ( select account , value , period from demo ) x pivot ( max(value) for period in (' + @cols + ') ) p ' execute(@query)
from https://stackoverflow.com/questions/14618316/how-to-create-a-pivot-query-in-sql-server-without-aggregate-function by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] CASE WHEN 문 ORDER BY 절에 대한 (0) | 2020.05.10 |
---|---|
[SQL] 다른 열을 기준 서열의 PostgreSQL (0) | 2020.05.10 |
[SQL] SQL Server와 같은 포함 괄호 문자 (0) | 2020.05.10 |
[SQL] SQL 독특한 VARCHAR 대소 문자 구분 질문 (0) | 2020.05.10 |
[SQL] 어떻게 자동으로 UID12345678 같은 SQL에 고유 ID를 생성하는? (0) | 2020.05.10 |