我的视图定义如下:
Select IdSezioneDonatore, NumeroDonatore, Anno, DonaAnno
From dbo.DonazioniAnnue
Where (Anno>= YEAR(GETDATE())-4)
我将返回以下字段和值:
IdSezioneDonatore NumeroDonatore Anno DonaAnno
2850 3624 2009 3
2850 5585 2009 1
2850 3624 2010 2
2850 5586 2010 1
2850 3624 2011 1
2850 5586 2011 1
.... ..... .... ...
如何获得这样的结果?:
IdSezioneDonatore NumeroDonatore Anno 2009 Anno2010 Anno 2011 Anno 2012 Anno 2013
2850 3624 3 2 0 0 0
2850 5585 1 0 0 0 1
2850 5586 0 1 1 0 1
.... ..... ... ... ... ... ...
坦克全部
答案 0 :(得分:1)
DECLARE @QUERY NVARCHAR(MAX)
DECLARE @Annos TABLE(Anno INT)
INSERT INTO @Annos
SELECT DISTINCT Anno FROM TEST
DECLARE @Annuals VARCHAR(MAX)
DECLARE @Annuals_New VARCHAR(MAX)
SELECT @Annuals = COALESCE(+@Annuals+'],[' ,'[') +CONVERT(VARCHAR(10),A.Anno)
FROM @Annos A
SET @Annuals_New = @Annuals+']'
SELECT @QUERY='SELECT * FROM TEST PIVOT (MAX(DonaAnno) FOR Anno IN ('+@Annuals_New+'))AS [pivot]'
EXEC SP_EXECUTESQL @QUERY
这会有所帮助。 ; - )