Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我可以将字段列表存储在变量中以用于其他查询吗?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

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颜色编码完全关闭,因为所有内容都被视为字符串,等等)。因此,我基本上希望有其他的解决方案:-)看到你首先得到的是这样的字段,我几乎不认为还有其他选择。当然,我可能完全错了:你为什么需要临时桌子?如果有查询,可以在大多数使用临时表的上下文中运行该查询。