Sql 我可以将字段列表存储在变量中以用于其他查询吗?
我有一个诱人的保留字段,需要为不同的客户端报告导出这些字段。该表充当一个接口:客户端删除和添加字段,我们相应地生成报告。为了方便导出,我们使用以下代码段:Sql 我可以将字段列表存储在变量中以用于其他查询吗?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个诱人的保留字段,需要为不同的客户端报告导出这些字段。该表充当一个接口:客户端删除和添加字段,我们相应地生成报告。为了方便导出,我们使用以下代码段: -- Compile select list select top 1 stuff(( select ',' + 'cast([' + Column + '] as nvarchar(max)) as ' + Column from #report_fields a where a.Fi
-- Compile select list
select top 1
stuff((
select ',' + 'cast([' + Column + '] as nvarchar(max)) as ' + Column
from #report_fields a
where a.FieldType like 'X' or a.FieldType like 'Y'
for XML path('')
),1,1,'') as document_fields
from #report_fields a
;
这将产生一个如下列表
cast([Field1] as nvarchar(max)) as Field1,
cast([Field2] as nvarchar(max)) as Field2,
cast([Field3] as nvarchar(max)) as Field3,
...
cast([FieldN] as nvarchar(max)) as FieldN
在查询中使用,如
select
cast([Field1] as nvarchar(max)) as Field1,
cast([Field2] as nvarchar(max)) as Field2,
cast([Field3] as nvarchar(max)) as Field3,
...
cast([FieldN] as nvarchar(max)) as FieldN
into
#client_fields_temp
from
dbo.ClientData
我在整个脚本中都这样做。但是,它需要手动运行第一个查询,并将结果(字段列表)复制粘贴到第二个查询中。我想自动化这个。是否可以将fieldist存储在变量中并使用如下内容:
-- Compile select list
@fieldlist = select top 1
stuff((
select ',' + 'cast([' + Column + '] as nvarchar(max)) as ' + Column
from #report_fields a
where a.FieldType like 'X' or a.FieldType like 'Y'
for XML path('')
),1,1,'') as document_fields
from #report_fields a
;
select
@fieldlist
into
#client_fields_temp
from
dbo.ClientData
任何帮助都将不胜感激 是的,通过动态SQL。请仔细阅读。啊,我知道,但这有很多缺点(在动态查询中创建的临时表在dyn.query之外不可用,我宁愿避免使用全局临时表,IDE颜色编码完全关闭,因为所有内容都被视为字符串,等等)。因此,我基本上希望有其他的解决方案:-)看到你首先得到的是这样的字段,我几乎不认为还有其他选择。当然,我可能完全错了:你为什么需要临时桌子?如果有查询,可以在大多数使用临时表的上下文中运行该查询。