Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 另一个具有动态字段的轴心_Sql Server 2008 - Fatal编程技术网

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