2016-07-28 2 views
1

У меня есть SQL Server 2008 R2. Я пытаюсь преобразовать одну строку в столбец, чтобы получить результат в желаемом формате.Оператор PIVOT, не работающий в SQL Server 2008 R2

Имя таблицы: GenderYearWise

Year Gender Total 
--------------------- 
2005 Female 374 
2005 Male 1579 
2006 Female 853 
2006 Male 4769 

Я хочу, чтобы получить результат в следующем формате:

Gender 2005 2006 
---------------------- 
Female 374  853 
Male 1579 4769 

Я пытаюсь получить требуемый формат, используя следующий запрос:

Select 
    Gender, 2005, 2006 
From 
    GenderYearWise 
PIVOT 
    (sum(total) 
    for year IN ([2005], [2006]) 
) AS PitvotTable 

Но выше запрос возвращает эти результаты:

Gender (No column name) (No column name) 
-------------------------------------------- 
Female 2005    2006 
Male 2005    2006 

Может ли кто-нибудь помочь мне и определить проблему в моем запросе?

+1

Название столбца Escape 2005 и 2006 до [2005], [2006]. – Blank

ответ

1

В инструкции SELECT добавить escape [ и ] для названий столбцов 2005 и 2006 годов, например [2005], [2006].

выполнение образца с заданным данным:

DECLARE @GenderYearWise TABLE ([Year] INT, Gender VARCHAR (100), Total INT); 

INSERT INTO @GenderYearWise ([Year], Gender, Total) VALUES 
(2005, 'Female' , 374), 
(2005, 'Male' ,1579), 
(2006, 'Female' , 853), 
(2006, 'Male' ,4769); 

Select 
    Gender, [2005], [2006] 
From 
    @GenderYearWise 
PIVOT 
    (SUM(total) 
    FOR [Year] IN ([2005], [2006]) 
) AS PitvotTable 

Результат:

Gender 2005 2006 
Female 374  853 
Male 1579 4769 

избежать Также имени столбца для зарезервированного ключевого слова Year.

+0

отлично, он работает для меня. но почему нам нужно избегать этого? – Anjum

+1

Здесь 'Gender' - известное имя столбца из таблицы. Но '2005' и' 2006' получены от PIVOT. Таким образом, в select, если бы не избежать столбец с '[]', он будет рассматриваться как строка. Таким образом, в 2005 и 2006 годах указаны значения данных. – Arulkumar

-2

его работа хорошо в моей системе

выбрать пол, [2005], [2006] от genderyearwise т шарнира (сумма (всего) за год ([2005], [2006])), как Пвт

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