Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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/8/mysql/60.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 来自CTE的多个插件_Sql_Sql Server - Fatal编程技术网

Sql 来自CTE的多个插件

Sql 来自CTE的多个插件,sql,sql-server,Sql,Sql Server,我有一个非常复杂的CTE,它有数百行代码 ;WITH Data_alert AS ( ) 我喜欢从CTE Data_alert的结果中插入变量表,然后再插入数据库表 从我看来,这可能是不可能的,除非我附加另一个CTE的第一个 因此: WITH Data_alert AS ( ), Data_alert2 AS ( ) 任何帮助都会有帮助。如果您有一个复杂的查询需要多次引用,那么您可能需要某种类型的临时表: WITH

我有一个非常复杂的CTE,它有数百行代码

    ;WITH Data_alert
    AS (

    )
我喜欢从CTE Data_alert的结果中插入变量表,然后再插入数据库表

从我看来,这可能是不可能的,除非我附加另一个CTE的第一个

因此:

    WITH Data_alert
    AS (

    ),
    Data_alert2 AS
    (

    )

任何帮助都会有帮助。

如果您有一个复杂的查询需要多次引用,那么您可能需要某种类型的临时表:

WITH Data_alert AS (
      . . . 
     )
SELECT *
INTO #Data_alert
FROM Data_alert;
然后可以在多个查询中重复使用临时表

从性能角度来看,这保证了底层复杂代码只执行一次。此外,还可以添加索引以进一步提高性能


从处理的角度来看,这确保了脚本中的不同步骤可以看到相同的数据,即使基础数据发生了变化。

“从我看来,除非在第一个CTE上附加另一个CTE,否则可能无法看到相同的数据。”为什么不这样做?你在哪里看到的?您可以在一条语句中定义多个CTE,是;我一直在做。你可以用INSERTAn的OUTPUT子句插入到两个不同的表中,这可能会有所帮助,但是你的问题很模糊,很难说清楚。谢谢。我要做的是插入@Data\u Input,然后使用CDE Data\u alert插入到另一个表中。因此,我喜欢从CDE Data_alert进行多个插入。