重命名SQL中的所有透视值

时间:2015-02-06 07:23:07

标签: sql sql-server pivot

我已将值存储在Fields表,Name列中。以下是应作为列名称的名称列表,对于它我使用PIVOT。我需要将1添加到所有选定的名称。

它应该是这样的:

枢轴前:

Column name:   |  Name     |        
               |  Jeniffer |                                      
               |  Jason    |
               |  Jack     |

枢轴后:

Column names: | Jennifer1  | Jason1 |  Jack1 |
              -- It should go as column names
              -- And on each of name add 1      

我有PIVOT的代码,它已成功完成,只是问题是如何将单位1添加到所有选定的值?

这是我的存储过程代码的一部分:

SELECT @cols += ([Name]) + ','
FROM   (    SELECT  Name -- Here selecting names which should be renamed
    FROM    Fields
    WHERE   Id Between 50 And 82
) a 

SET @cols   = LEFT(@cols, LEN(@cols) - 1)
SET @sql    = 'SELECT * FROM 
    (
        SELECT FF.Name AS [NamePiv]                     
        FROM  ......................
        WHERE ......................                                
    ) x 
    PIVOT
    (
        MIN (Val1)
        FOR NamePiv IN (' + @cols + ') 
    ) p'

EXEC Sp_executesql @sql, N'@param1 NVARCHAR(60), @param2 TINYINT, @param3 NVARCHAR(80)', @param1, @param2, @param3              

1 个答案:

答案 0 :(得分:0)

您可以创建变量@selectCols并在其中存储别名:

DECLARE @selectCols varchar(max) = ''
SELECT @cols += ([Name]) + ',', @selectCols += ([Name]) + ' [' + ([Name]) + '1] ,' 
FROM ...

SET @selectCols   = LEFT(@selectCols, LEN(@selectCols) - 1)
SET @sql    = 'SELECT ' + @selectCols + ' FROM 
            ( ...