我需要创建一个动态sql查询,以便返回表的第一列中的所有值。表的名称必须是变量@tableName(我将根据几个条件为多个表运行此查询)。另外,我不完全知道第一列的名称,但它是由Id_ @ tableName形成的。
我需要类似下面的内容,但是会以恐怖的方式写下来:
select
(select column_name from INFORMATION_SCHEMA.columns where table_Name= @tableName and ordinal_position=1)
from @tableName
你能帮帮我吗?提前谢谢!
答案 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;