sql - SQL Server 中 CTE 内的 CTE

标签 sql sql-server sql-server-2008 tsql

请不要将此问题标记为 CTE within a CTE 的重复项..我检查了那个问题和答案……但那个答案不能满足我的需要。

我想像这样运行嵌套 CTE 查询

Drop Table #Temp
Create Table #Temp(name1 text, name2 text)

Insert INTO #Temp Values ('test','test')
Insert INTO #Temp Values ('test','test')

;WITH CTE1 AS (
   With CTE2 as ( Select * from #Temp)
)

Select * from CTE1

或者
;WITH CTE1 AS (
   Select * From (With CTE2 as ( Select * from #Temp))
)

Select * from CTE1

在我们的结构中......内部CTE2查询已由其他系统提供..所以我无法控制
查询的内部部分......所以......这里我的职责只是从内部查询中选择值并在我的系统中形成新的CTE......

请想象一下
;WITH CTE1 AS (
       "Query Provide by Other System"
    )

在某些情况下,“由其他系统提供的查询”以 CTE 开头..这可能是也可能不是 CTE 查询......这是我无法使用的确切问题,如下所示
;WITH CTE1 AS (
   Select * From 
)
,With CTE2 as
 ( Select * from #Temp))

请帮助任何人解决这个问题,我想我的需求太动态了

最佳答案

只是有一个想法:

;WITH cte1 AS
(
    SELECT * FROM ...
),
cte2 as
(
    SELECT * FROM ...
),
cte3 as
(
    SELECT * FROM ... INNER JOIN cte2 ON...
),
SELECT *
FROM
    cte1
    INNER JOIN cte3 ON   ...

关于sql - SQL Server 中 CTE 内的 CTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989597/

相关文章:

sql - 我可以在SQL Server中创建创建全局函数吗?

php - SELECT DISTINCT 返回所有值

sql - ORDER BY ABS(CHECKSUM(NEWID())) 如何工作?

c# - 单个 SQL Server 表上的死锁

java - MS-SQL 快照隔离和 Hibernate 行为

MYSQL 语法错误有两个 WHERE

sql - 使用 where 子句选择具有最大日期时间的所有记录

mysql - 使用 UNION 从结果集中的各个表中获取列值

c# - 查询从每个组中删除早于 n 个事件日期的记录

sql - INSERTED 表中的多行