如何在不指定列名的情况下返回表的第一列中的所有值?

时间:2016-06-27 08:17:19

标签: sql tsql dynamic-sql

我需要创建一个动态sql查询,以便返回表的第一列中的所有值。表的名称必须是变量@tableName(我将根据几个条件为多个表运行此查询)。另外,我不完全知道第一列的名称,但它是由Id_ @ tableName形成的。

我需要类似下面的内容,但是会以恐怖的方式写下来:

select
(select column_name from INFORMATION_SCHEMA.columns where table_Name= @tableName and ordinal_position=1)
from @tableName
你能帮帮我吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

USE AdventureWorks;
GO

DECLARE @ObjectName SYSNAME = 'Sales.SalesOrderHeader';

DECLARE @SQL NVARCHAR(MAX);
SELECT
    @SQL = 'SELECT ' + QUOTENAME(name) + ' FROM ' + @ObjectName
FROM
    sys.columns
WHERE
    object_id = OBJECT_ID(@ObjectName)
    AND column_id = 1;
EXEC sp_executesql @SQL;