SQL Server:如何将列名设置为动态变量的值?

时间:2016-06-05 11:31:12

标签: sql sql-server

如下例所示(可能不是一个好例子):

DECLARE @var1 VARCHAR(50)
SET @var1 = (SELECT TOP(1) MiddleName FROM myTable)

SELECT Name, SSN AS @var1 
FROM myTable

我试图通过使用AS语句(在本例中是表MiddleName中的第一个myTable值)作为SSN列名称来设置变量中的值。关于如何使这项工作的任何想法?

3 个答案:

答案 0 :(得分:3)

您需要动态SQL。

mLayout.setPanelHeight(your_drag_layout.getHeight())

答案 1 :(得分:2)

如果您确实需要这样做,请使用exec()sp_executesql

DECLARE @var1 VARCHAR(50);
SET @var1 = (SELECT TOP(1) MiddleName FROM myTable);

DECLARE @sql NVARCHAR(MAX);
SET @sql = 'SELECT Name, SSN AS [@var1] FROM myTable';
SET @sql = REPLACE(@sql, '@var1', @var1);

EXEC sp_executesql @sql;

答案 2 :(得分:0)

试试这个:

    DECLARE @var1 VARCHAR(50)
  , @sql NVARCHAR(MAX)
SET @var1 = ( SELECT TOP ( 1 )
                        MiddleName
              FROM      myTable
            )

SET @sql = N'SELECT Name, SSN' + ' ' + @var1 + 'FROM myTable'

EXEC sys.sp_executesql @sql

注意: - 请记住在@ var1之前至少有一个空格。