SELECT 语句可以使用包含字段名称的变量吗?
Can a SELECT statement use variables containing field names?
我将 SQL Server 2008R2 与 SSMS17 一起使用,并尝试根据当前数据自动生成一些 'least used fields' 报告。理想情况下,我想将这些字段的列表检索到一个 table 变量中,然后创建一个 SELECT 语句,我在其中提取记录 ID 以及这些最少使用的字段的值,但是变量解析为文本而不是字段名称。我正在尝试的可能吗?
这是一个使用已知字段名称的简化示例:
DECLARE @f1 as nvarchar(20) = 'MySpaceID';
DECLARE @f2 as nvarchar(20) = 'FaxNum';
DECLARE @f3 as nvarchar(20) = 'PagerNum';
SELECT [ID], [FullName], @f1 as Field1, @f2 as Field2, @f3 as Field3
FROM tblContacts
WHERE @f1 is not null
OR @f2 is not null
OR @f3 is not null;
我得到的是变量值作为输出。
f1 f2 f3
---------- ------ ---------
MySpaceID FaxNum PagerNum
MySpaceID FaxNum PagerNum
MySpaceID FaxNum PagerNum
这可行吗?
谢谢。
EXEC('SELECT [ID], [FullName], ' + @f1 + ' as Field1, ' + @f2 + ' as Field2,' + @f3 + ' as Field3
FROM tblContacts
WHERE ' + @f1 + ' IS NOT NULL
OR ' + @f2 + ' IS NOT NULL
OR ' + @f3 + ' IS NOT NULL')
我将 SQL Server 2008R2 与 SSMS17 一起使用,并尝试根据当前数据自动生成一些 'least used fields' 报告。理想情况下,我想将这些字段的列表检索到一个 table 变量中,然后创建一个 SELECT 语句,我在其中提取记录 ID 以及这些最少使用的字段的值,但是变量解析为文本而不是字段名称。我正在尝试的可能吗?
这是一个使用已知字段名称的简化示例:
DECLARE @f1 as nvarchar(20) = 'MySpaceID';
DECLARE @f2 as nvarchar(20) = 'FaxNum';
DECLARE @f3 as nvarchar(20) = 'PagerNum';
SELECT [ID], [FullName], @f1 as Field1, @f2 as Field2, @f3 as Field3
FROM tblContacts
WHERE @f1 is not null
OR @f2 is not null
OR @f3 is not null;
我得到的是变量值作为输出。
f1 f2 f3
---------- ------ ---------
MySpaceID FaxNum PagerNum
MySpaceID FaxNum PagerNum
MySpaceID FaxNum PagerNum
这可行吗?
谢谢。
EXEC('SELECT [ID], [FullName], ' + @f1 + ' as Field1, ' + @f2 + ' as Field2,' + @f3 + ' as Field3
FROM tblContacts
WHERE ' + @f1 + ' IS NOT NULL
OR ' + @f2 + ' IS NOT NULL
OR ' + @f3 + ' IS NOT NULL')