Sql server sqlserver2005中的PIVOT语句

Sql server sqlserver2005中的PIVOT语句,sql-server,pivot,pivot-table,Sql Server,Pivot,Pivot Table,在dbMicrosoft SQL Server 2005中,我执行以下查询: SELECT doRegion, YEAR (doDate) AS 'doYear', COUNT (*) AS 'doNumber' FROM [dbo].[doTable] GROUP BY doRegion, YEAR (doDate) ORDER BY doRegion, YEAR (doDate) DESC; 我有这个输出: +----------+------

在dbMicrosoft SQL Server 2005中,我执行以下查询:

SELECT
 doRegion,
 YEAR (doDate) AS 'doYear',
 COUNT (*) AS 'doNumber'
FROM
    [dbo].[doTable]
GROUP BY
    doRegion,
    YEAR (doDate)
ORDER BY
    doRegion,
    YEAR (doDate) DESC;
我有这个输出:

+----------+------+--------+
|doRegion  |doYear|doNumber|
+----------+------+--------+
|northw    |2017  |806     |
|northw    |2016  |186     |
|northw    |2015  |149     |
|northw    |2014  |114     |
|northw    |2013  |72      |
+----------+------+--------+
我需要这个输出:

+-----------+----+----+----+----+----+
|doRegion   |2017|2016|2015|2014|2013|
+-----------+----+----+----+----+----+
|northw     |806 |186 |149 |114 |72  |
+-----------+----+----+----+----+----+
我想我必须使用它PIVOT语法,我已经尝试过了,但没有成功

如何解决这个问题

你能帮我吗

提前感谢您的帮助,非常感谢。

使用动态Sql 样本数据

IF OBJECT_ID('tempdb..#t') IS NOT NULL
DROP TABLE #t
;With cte(doRegion  ,doYear,doNumber)
AS
(
SELECT 'northw'    ,2017  ,806 UNION ALL    
SELECT 'northw'    ,2016  ,186 UNION ALL    
SELECT 'northw'    ,2015  ,149 UNION ALL    
SELECT 'northw'    ,2014  ,114 UNION ALL     
SELECT 'northw'    ,2013  ,72    
)
SELECT * INTO #t FROM cte
动态Sql

DECLARE @Sql nvarchar(max),@COlumnName nvarchar(max)

SELECT @COlumnName=STUFF((SELECT DISTINCT ', '+QUOTENAME(doYear) FROM #t i
ORDER BY i.doYear DESC FOR XML PATH ('')),1,1,'')

SELECT @COlumnName

SET @Sql='SELECT doRegion,'+@COlumnName+ 'FROM
         (
         SELECT * FROM #t
         )AS SRC
         PIVOT
         (
         MAX(doNumber) FOR doYear IN ('+@COlumnName+')
         )AS Pvt
'
Print @Sql
EXEC (@Sql)
结果

 doRegion   2017    2016    2015    2014    2013
------------------------------------------------
northw       806    186      149     114     72

你尝试了什么?你犯了什么错误?