Sql server 2008 另一个具有动态字段的轴心
我的观点定义如下:Sql server 2008 另一个具有动态字段的轴心,sql-server-2008,Sql Server 2008,我的观点定义如下: Select IdSezioneDonatore, NumeroDonatore, Anno, DonaAnno From dbo.DonazioniAnnue Where (Anno>= YEAR(GETDATE())-4) 我将返回以下字段和值: 我怎样才能得到这样的结果 IdSezioneDonatore NumeroDonatore Anno 2009 Anno2010 Anno 2011 Anno 2012 Anno 2013 2
Select IdSezioneDonatore, NumeroDonatore, Anno, DonaAnno
From dbo.DonazioniAnnue
Where (Anno>= YEAR(GETDATE())-4)
我将返回以下字段和值:
我怎样才能得到这样的结果
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
.... ..... ... ... ... ... ...
坦克
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
这会有帮助。;-) 厕所。将我的ans标记为有用。;-)
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