重命名 SQL 中的所有透视值

Rename all Pivoted Values in SQL

我在 Fields table、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              

您可以创建一个变量 @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 
            ( ...