Przestaw tabelę na wartość, ale zgrupuj dane w jednej linii przez inną?
Mój stół
CREATE TABLE #table
([Indicator] int, [Scenario_code] smallint, [period] nvarchar(50), [Value] int, [AREA code] nvarchar(10), [Release_Code] int)
;
INSERT INTO #table
([Indicator], [Scenario_code], [period], [Value], [AREA code], [Release_Code])
VALUES
(2, 7, '2000-06-13', 1000, 'OP014', 17),
(2, 16, '2000-09-12', 1100, 'OP014', 17),
(2, 17, '2002-06-22', 1200, 'OP014', 17),
(3, 7, '2000-01-12', 1300, 'OP014', 17),
(3, 16, '2000-06-17', 500, 'OP014', 17),
(3, 17, '2008-05-04', 550, 'OP014', 17),
(4, 7, '2000-06-12', 600, 'OP014', 17),
(4, 16, '2000-12-12', 650, 'OP014', 17),
(4, 17, '2013-06-12', 150, 'OP014', 17)
Chciałbym, aby pola [kropka] i [wartość] były w jakiś sposób obrócone na podstawie pól [wskaźnik] i [kod_ scenariusza]. Istnieją trzy wartości wskaźników (2,3,4) i trzy kody scenariuszy (7,16,17). Chcę pogrupować wiersze według kodu scenario i mieć odpowiednią wartość wskaźnika jako własne pole. Wynik, trzy wiersze, powinien wyglądać następująco.
{[Scernario_code], [Period 2], [Value 2], [Period 3], [Value 3], [Period 4], [Value 4], [Area Code], [Release code]}
7, „2000-06-13”, 1000, „2000-01-12”, 1300, „2000-06-12”, 600, „OP014”, 17
16, „2000-09-12”, 1100, „2000-06-17”, 500, „2000-12-12”, 650, „OP014”, 17
17, „2002-06-22”, 1200, „2008-05-04”, 550, „2013-06-12”, 150, „OP014”, 17
Kolumny okresu i wartości zostały rozłożone na podstawie ich trzech wartości wskaźnika (2,3,4), które są powiązane z jednym [kodem scenariusza]. Udoskonaliłem kolumny z wartością wskaźnika, na którą została włączona. Idealnie będę je aliasować jako coś innego.
MyśliJest to oczywiście krzykliwy pivot lub unpivot (lub nawet oba), ale moje podręczniki nie mają czegoś, w czym muszę wziąć pod uwagę dwie kolumny dla elementu rozprzestrzeniającego [kropka] i [wartość]. Potrzebuję danych do obrócenia o wartość wskaźnika, aby były kolumnami, ale zgrupowanymi w tej samej linii co kod scenariusza. Może pomogłaby konkatenacja ...?
Widziałem CROSS APPLY z Pivotem, który wygląda obiecująco, ale nie udało mi się go uruchomić, ponieważ nie do końca rozumiem, jak to jest wykorzystywane. Niedawno zacząłem używać SQL Server 2012.