시리즈가 a, b, c에 고정되어 있다면 다음과 같이 할 수 있습니다 :
CREATE TABLE #t (Id INT, Year INT,
Series VARCHAR(5), Value DECIMAL(10,1))
INSERT #t
VALUES
(1, 1990, 'a', 1.5),
(1, 1990, 'b', 1.6),
(1, 1990, 'c', 1.7),
(1, 1991, 'a', 1.8),
(1, 1991, 'b', 1.9),
(1, 1991, 'c', 2.5)
SELECT pvt.Year,
pvt.a,
pvt.b,
pvt.c
FROM #t
PIVOT (
MIN(Value) FOR Series IN ([a], [b], [c])
) pvt
012 다른 값이 될 경우 3,516,
동적 피벗 사용할 수 있습니다 : 고정 된 시리즈 시나리오에서
DECLARE @series VARCHAR(100) =
STUFF((SELECT DISTINCT ',[' + Series + ']'
FROM #t
FOR XML PATH(''))
,1, 1, '')
DECLARE @query VARCHAR(2000) = '
SELECT pvt.Year, ' + @series +'
FROM #t
PIVOT (
MIN(Value) FOR Series IN (' + @series + ')
) pvt
';
EXEC(@query)
을, CROSS와 가능성 가입도있다 :
SELECT a.Year,
MAX(CASE WHEN a.Series = 'a' THEN a.Value END) a,
MAX(CASE WHEN a.Series = 'b' THEN a.Value END) b,
MAX(CASE WHEN a.Series = 'c' THEN a.Value END) c
FROM #t a
CROSS JOIN #t b
GROUP BY a.Id, a.Year
ORDER BY a.Year
는 (A, B 시리즈의 값입니다 , c) 고정 된 세트 또는 '시리즈'가 추가 값을 가질 수 있습니까? –
다른 시리즈가 있을지 모르지만 나는 a, b 및 c에만 관심이 있습니다. 그렇기 때문에 우리는 고정 된 것으로 간주 할 수 있습니다. – Youssef
다음 이반 G는 답을 가지고 있습니다. –