如果系列固定爲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
如果將其他的值,你可以使用動態透視:
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)
在有固定系列的場景,也有交叉的可能性JOIN:
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)一個固定的設置或可以'系列'採取額外的價值? – 2012-08-02 13:51:35
可能有其他系列,但我只對a,b和c感興趣,所以我們可以考慮將它們修復 – Youssef 2012-08-02 14:02:35
,那麼Ivan G就有了答案。 – 2012-08-02 14:07:59