动态字段的另一个枢轴

时间:2013-11-29 11:04:02

标签: sql-server-2008

我的视图定义如下:

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
    ....                   .....             ...       ...       ...      ...       ...

坦克全部

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

这会有所帮助。 ; - )