2015-05-10 3 views
2

У меня есть таблица с тремя столбцами: - имя, col1, col2данных Транспонирования создать таблицу

Мне нужно создать еще одну таблицу с col1 в виде столбцов и col2 как значения. Может кто-нибудь дать мне идею.

Это источник:

Name  col1   col2 
details Company  Microsoft 
details Employees 300 
details City   New York 
details2 Company  Apple 
details2 Employees 450 
details2 City   Boston 

мне нужна таблица для деталей, как этот

Company Employees City 
Microsoft 300   NewYork 

И еще один стол для details2 так:

Company Employees City 
    Apple  450   Boston 
+1

Не очень понятно, что использование столбца 'name', например? –

+0

привет, у меня есть мой вопрос. спасибо. – rozatrra

+1

Вам нужна одна таблица в качестве выходных данных или отдельная таблица для каждого столбца Distinct NAME? Если да, то почему вам нужна отдельная таблица, специфичная для столбца NAME. Вы меняете свой вопрос снова и снова ... с каждым конкретным условием ... Лучше всего сразу задать все ваши потребности, чтобы другие могли ясно, что вам нужно – HaveNoDisplayName

ответ

2

Вы можете конвертировать ваши Один столбец соответствует значениям столбцов таблицы и второго столбца в виде строк, подобных этому способу

Первый подход: - SAMPLE SQL FIDDLE

Select  
MAX(case when col1 = 'Company' then col2 end) Company, 
MAX(case when col1 = 'Employee' then col2 end) Employee, 
MAX(case when col1 = 'City' then col2 end) City 
From test 
Group By name 

EDIT

Второй подход: - SQL FIDDLE

DECLARE @QUERY NVARCHAR(MAX), @Soucecolumn VARCHAR(MAX) 
SET @Soucecolumn = STUFF((SELECT distinct ',[' + [col1 ] + ']' FROM test FOR XML PATH('')),1,1,'') 
SET @QUERY = 'SELECT ' + @Soucecolumn + ' FROM test PIVOT (MAX(col2) FOR [col1 ] IN (' + @Soucecolumn + ')) AS pvt' 
exec sp_executesql @QUERY 
+0

thx, это работает, но, что, если у меня есть n строк в col1 и разные значения для имени. Я хочу поставить это в sp. – rozatrra

+0

см. EDIT в ответе, второй подход – HaveNoDisplayName

+0

Я получаю эту ошибку: Имя столбца «значение (col1)», указанное в операторе PIVOT, конфликтует с существующим именем столбца в аргументе PIVOT. – rozatrra

Смежные вопросы