Вот как создать ваш поддельный набор данных в SQL.(Примечание: данные вставляются в SQL по строкам, а не по столбцам.)
IF OBJECT_ID('fake_data','U') IS NOT NULL
DROP TABLE fake_data;
CREATE TABLE fake_data (
[year] int
,[tin] int
,[ptin] int
);
INSERT INTO fake_data (
[year]
,[tin]
,[ptin]
)
VALUES
(2001,12,12),(2002,23,23),(2005,24,28),(2002,28,22),(2004,30,12),(1999,12,12)
,(1999,7,0),(1999,12,12),(2012,12,12),(2000,23,23),(2010,24,27),(2005,7,45)
,(2006,12,99),(2009,35,7),(2009,39,7),(2009,37,7),(2009,36,7),(2010,333,0)
,(2007,13,17),(2008,13,21),(2009,13,26),(2010,13,18);
Затем просмотрите образец набора данных:
SELECT * FROM fake_data;
Вот запрос SQL для вашей сводной таблицы.NB. Скобки не всегда необходимы для имен столбцов, но это хорошая идея, если имена столбцов являются зарезервированными словами в SQL (например, «год», функция).
SELECT
[tin],[1999],[2000],[2001],[2002],[2004],[2005],[2006],[2007],[2008],[2009],[2010],[2012]
FROM
fake_data
PIVOT (
COUNT([ptin])
FOR [year]
IN ([1999],[2000],[2001],[2002],[2004],[2005],[2006],[2007],[2008],[2009],[2010],[2012])
) AS myPivotTable
ORDER BY [tin];
Посмотрите на динамический SQL, если вынужно, чтобы заголовки столбцов были результатом запроса, а не собраны вручную.