Я пытаюсь развернуть таблицу на два столбца (мы сделали некоторую нормализацию для нашей таблицы, но нам нужно создать представление для обратной совместимости).Моя новая структура данных выглядит так:
CREATE TABLE #Products (
product VARCHAR(30),
market_year INT,
value INT,
description varchar(20));
INSERT INTO #Products VALUES('Corn', 2003, 100, 'bad');
INSERT INTO #Products VALUES('Beer', 2003, 200, 'not so bad');
INSERT INTO #Products VALUES('Beef', 2003, 150, 'good');
INSERT INTO #Products VALUES('Corn', 2004, 10, 'doo');
INSERT INTO #Products VALUES('Beer', 2004, 20, 'foo');
INSERT INTO #Products VALUES('Beef', 2004, 10, 'bar');
, которая выглядит следующим образом:
SELECT * FROM #Products p;
product market_year value description
Corn 2003 100 bad
Beer 2003 200 not so bad
Beef 2003 150 good
Corn 2004 10 doo
Beer 2004 20 foo
Beef 2004 10 bar
Нужный результат должен выглядеть следующим образом:
market_year |corn_value |corn_description | beer_value | beer_description |beef_value | beef_description
2003 | 100 |bad | 150 | NOT so bad |150 | good
2003 | 10 |doo | 15 | foo |15 | bar
Я знаюЯ мог бы сделать это с помощью двух отдельных операторов с одним стержнем на market_year и присоединить их к market_year, но для этого нужно было бы прочитать эту таблицу дважды.Есть ли более элегантный способ решить эту проблему?(моя таблица содержит приблизительно 7 миллионов записей, разделенных на 70 столбцов, которые необходимо вернуть к 140 столбцам)