2013-11-29 5 views
0

Я вид определяется следующим образом:Другой Pivot с Dynamic Fields

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
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([email protected]+'],[' ,'[') +CONVERT(VARCHAR(10),A.Anno) 
FROM @Annos A 

SET @Annuals_New = @Annuals+']' 
SELECT @QUERY='SELECT * FROM TEST PIVOT (MAX(DonaAnno) FOR Anno IN ('[email protected]_New+'))AS [pivot]' 

EXEC SP_EXECUTESQL @QUERY 

Это поможет. ;-)

+0

Спасибо Ram, отлично работает отлично Еще раз спасибо – Antony

+0

wc. Отметьте мои данные как полезные. ;-) –